Collections.sort(a,new Comparator<String>(){ public int compare(String o1, String o2) { char[] a1 = o1.toCharArray(); char[] a2 = o2.toCharArray();
for(int i=0;i<a1.length && i<a2.length;i++){ int c1 = getGBCode(a1[i]); int c2 = getGBCode(a2[i]);
if(c1 == c2) continue;
return c1-c2; }
if(a1.length == a2.length){ return 0; }
return a1.length - a2.length; } });
for(String s:a){ System.out.println(s); }
}
static int getGBCode(char c){ byte[] bytes = new StringBuffer().append(c).toString().getBytes(); if(bytes.length == 1){ return bytes[0]; } int a = bytes[0]-0xA0+256; int b = bytes[1]-0xA0+256;
return a*100+b; }}
static int getGBCode(char c){ byte[] bytes = new StringBuffer().append(c).toString().getBytes(); if(bytes.length == 1){ return bytes[0]; } int a = bytes[0]-0xA0+256; int b = bytes[1]-0xA0+256;
return a*100+b; }这段代码是将 字符转换成 GBCode 吗?(看方法名好象是)
import java.util.*;import java.text.*; public class Test2 { public static void testDefault() { String[] arr = {"张三", "李四", "王五", "刘六"}; Arrays.sort(arr); for (int i = 0; i < arr.length; i++) System.out.println(arr[i]); System.out.println(); } public static void testChinaLocale() { //Comparator cmp = (RuleBasedCollator)java.text.Collator.getInstance(java.util.Locale.CHINA);//try testing various locales Comparator cmp = Collator.getInstance(java.util.Locale.CHINA); String[] arr = {"张三", "李四", "王五", "刘六"}; Arrays.sort(arr, cmp); for (int i = 0; i < arr.length; i++) System.out.println(arr[i]); System.out.println(); } public static void testDefaultLocale() { //Comparator cmp = (RuleBasedCollator)java.text.Collator.getInstance(java.util.Locale.CHINA);//try testing various locales Comparator cmp = Collator.getInstance(); String[] arr = {"张三", "李四", "王五", "刘六"}; Arrays.sort(arr, cmp); for (int i = 0; i < arr.length; i++) System.out.println(arr[i]); System.out.println(); } public static void main(String args[]) { testDefault(); testChinaLocale(); testDefaultLocale(); }}
public class Testx { public static void main(String args[]) {
List<String> a = new ArrayList<String>();
a.add("在工地在");
a.add("工地工地");
a.add("abcdef");
a.add("中国a");
a.add("中国");
Collections.sort(a,new Comparator<String>(){
public int compare(String o1, String o2) {
char[] a1 = o1.toCharArray();
char[] a2 = o2.toCharArray();
for(int i=0;i<a1.length && i<a2.length;i++){
int c1 = getGBCode(a1[i]);
int c2 = getGBCode(a2[i]);
if(c1 == c2)
continue;
return c1-c2;
}
if(a1.length == a2.length){
return 0;
}
return a1.length - a2.length;
}
});
for(String s:a){
System.out.println(s);
}
}
static int getGBCode(char c){
byte[] bytes = new StringBuffer().append(c).toString().getBytes();
if(bytes.length == 1){
return bytes[0];
}
int a = bytes[0]-0xA0+256;
int b = bytes[1]-0xA0+256;
return a*100+b;
}}
byte[] bytes = new StringBuffer().append(c).toString().getBytes();
if(bytes.length == 1){
return bytes[0];
}
int a = bytes[0]-0xA0+256;
int b = bytes[1]-0xA0+256;
return a*100+b;
}这段代码是将 字符转换成 GBCode 吗?(看方法名好象是)
import java.util.*;import java.text.*;
public class Test2 { public static void testDefault() { String[] arr = {"张三", "李四", "王五", "刘六"}; Arrays.sort(arr); for (int i = 0; i < arr.length; i++) System.out.println(arr[i]); System.out.println(); }
public static void testChinaLocale() { //Comparator cmp = (RuleBasedCollator)java.text.Collator.getInstance(java.util.Locale.CHINA);//try testing various locales Comparator cmp = Collator.getInstance(java.util.Locale.CHINA); String[] arr = {"张三", "李四", "王五", "刘六"}; Arrays.sort(arr, cmp); for (int i = 0; i < arr.length; i++) System.out.println(arr[i]); System.out.println(); }
public static void testDefaultLocale() { //Comparator cmp = (RuleBasedCollator)java.text.Collator.getInstance(java.util.Locale.CHINA);//try testing various locales Comparator cmp = Collator.getInstance(); String[] arr = {"张三", "李四", "王五", "刘六"}; Arrays.sort(arr, cmp); for (int i = 0; i < arr.length; i++) System.out.println(arr[i]); System.out.println(); } public static void main(String args[]) { testDefault(); testChinaLocale(); testDefaultLocale(); }}
{
//排序
public int compare (Object o1, Object o2) {
TExpCategory tcg=(TExpCategory)o1;
TExpCategory tcg2=(TExpCategory)o2;
String categoryName="";
String categoryName2="";
try {
categoryName=new String(tcg.getCategoryName().getBytes("GB2312"),"ISO-8859-1");
categoryName2=new String(tcg2.getCategoryName().getBytes("GB2312"),"ISO-8859-1");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return categoryName.compareTo(categoryName2);
}
})
http://pinyin4j.sourceforge.net/