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