java语言将一个字符串集合按GBK编码(简体中文按拼音顺序)排序
2014-11-03 14:18
531 查看
/*
思路:由于java字符串排序默认为按Unicode编码排序,若想简体汉字按拼音排序,就要按GBK编码排序;首先建立方法比较两个字符串,将字符串用GBK编码转成byte数组,然后比较两个数组对应下标的大小关系,得出两个字符串的大小关系,然后按照这个比较大小的规则对整个集合进行排序。
*/
import java.io.UnsupportedEncodingException;
import java.util.List;
public class Tool {
/**
* 将字符串集合按GBK编码(简体字按拼音顺序)排序
* 常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集等
* java默认Unicode,系统默认GBK
*/
public static int compare(String str1,String str2){
try {
byte[] b1 = str1.getBytes("GBK");
byte[] b2 = str2.getBytes("GBK");
int l1=b1.length;
int l2=b2.length;
int l=Math.min(l1, l2);
int k=0;
while(k<l){
byte bt1=b1[k];
byte bt2=b2[k];
if(bt1!=bt2)
return bt1-bt2;
k++;
}
return l1-l2;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return 0;
}
public static void sort(List<String> list){
int size=list.size();
if(size<=1)
return;
for(int i=1;i<size;i++){
for(int j=i;j>0;j--){
if(compare(list.get(j), list.get(j-1))<0){
String temp=list.get(j);
list.set(j, list.get(j-1));
list.set(j-1, temp);
}else{
break;
}
}
}
}
}
思路:由于java字符串排序默认为按Unicode编码排序,若想简体汉字按拼音排序,就要按GBK编码排序;首先建立方法比较两个字符串,将字符串用GBK编码转成byte数组,然后比较两个数组对应下标的大小关系,得出两个字符串的大小关系,然后按照这个比较大小的规则对整个集合进行排序。
*/
import java.io.UnsupportedEncodingException;
import java.util.List;
public class Tool {
/**
* 将字符串集合按GBK编码(简体字按拼音顺序)排序
* 常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集等
* java默认Unicode,系统默认GBK
*/
public static int compare(String str1,String str2){
try {
byte[] b1 = str1.getBytes("GBK");
byte[] b2 = str2.getBytes("GBK");
int l1=b1.length;
int l2=b2.length;
int l=Math.min(l1, l2);
int k=0;
while(k<l){
byte bt1=b1[k];
byte bt2=b2[k];
if(bt1!=bt2)
return bt1-bt2;
k++;
}
return l1-l2;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return 0;
}
public static void sort(List<String> list){
int size=list.size();
if(size<=1)
return;
for(int i=1;i<size;i++){
for(int j=i;j>0;j--){
if(compare(list.get(j), list.get(j-1))<0){
String temp=list.get(j);
list.set(j, list.get(j-1));
list.set(j-1, temp);
}else{
break;
}
}
}
}
}
相关文章推荐
- java中如何从字符串中删选中文字符(GBK编码和UTF-8编码)
- java 集合 有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数
- php和mysql采用utf-8编码时实现按照一个文本字段的首字母的拼音顺序进行排序的方法
- Java 中文字符串编码之GBK转UTF-8
- Java字符串按照中文拼音排序
- java 给定一个字符串数组。按照字典顺序进行从小到大的排序。
- Java 中文字符串编码之GBK转UTF-8
- java一个对象根据另一个集合的顺序进行排序
- java中文字符串按拼音排序代码
- java中文字符串按拼音排序 代码(转)
- 设计函数,输入为一个字符串,里边包含中文、英文、数字等字符,编码为GBK。中文字符的编码规则假定为:双字节组成,高字节大于0x80,低字节任意。
- java中文字符串按拼音排序 代码
- java集合某个字段按照中文拼音排序
- Java 字符串列表拼音排序功能类
- 遍历SortedList集合元素——使其顺序按字母排序(汉字则按拼音首字母排序)
- Java中的字符集编码入门(三)GB2312,GBK与中文网页
- Java 字符串列表拼音排序功能类
- java 中文排序 中文拼音排序 pinyin4j (怡,阿等)
- mysql中utf8编码的中文字段按拼音排序
- 最简单的对Java List列表按中文拼音排序的实现方式