200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > java语言将一个字符串集合按GBK编码(简体中文按拼音顺序)排序

java语言将一个字符串集合按GBK编码(简体中文按拼音顺序)排序

时间:2023-11-11 02:37:30

相关推荐

java语言将一个字符串集合按GBK编码(简体中文按拼音顺序)排序

/*

思路:由于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;

}

}

}

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。