怎么将字符以拼音的方式排序,谢谢。
解决方案 »
- 子窗口刷新父窗口问题
- 拿什么来学你java(入门)
- 问一个大家都遇到的问题:为什么在JSP中将传进来的参数要判断是不是为空null还要判断是不是为""呢,为什么啊双重判断呢,搞不懂
- 欢迎达人进来指点~····
- 请问Class.getDeclaredMethod(String name, Class... parameterTypes)中 Class... parameterTypes怎么理解
- 最近闲的无聊,想找点儿东西学学,不知是.Net还是Java好?我知道学哪门语言都不错,还请大家说说吧!
- JBulder里数据库文件的问题?
- 初学者的请教
- 求助!(因为刚入门,呵呵)
- 第一次发帖,求助帖
- JAVA企业开发
- unix 下的java 程序设计入门问题
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/