java List中关于中文排序的问题
问题描述:
当有一个person类,里面有2个属性:name1,name2对应属性的是get,set方法。
构造了4个person类的对象,如下
Person person1=new Person();
Person person2=new Person();
Person person3=new Person();
Person person4=new Person();
person1.setName1("张三");
person1.setName2("刘刘");
person2.setName1("张三");
person2.setName2("照照");
person3.setName1("李四");
person3.setName2("窝窝");
person4.setName1("李四");
person4.setName2("牛牛");
将他们放入list中
List sabin=new ArrayList();
sabin.add(person1);
sabin.add(person3);
sabin.add(person4);
sabin.add(person2);
问题出现了,如何对sabin中的记录进行排序。
补充:如果属性值为英文的我会,当象这样是中文的怎么排序呢,日文的呢。。。
高手提供一下思路或相关连接谢了
在补充能否先按name1排序,在按name2排序一下完成。
[b]问题补充:[/b]
你给了我按优先级排列的思路!!太厉害了,网上很少有按优先级排列的例子!但是日文和中文还得继续研究因为没有这句话
Comparator cmp = Collator.getInstance(java.util.Locale.CHINA);
系统也能实现分类排序,只是不知道排列的顺序是什么!!(按什么方式升序和降序)太感谢了
[code="java"]
Comparator cmp = new Comparator() {
public int compare(Person o1, Person o2) {
Comparator<Object> cmp = Collator.getInstance(java.util.Locale.CHINA);
String[] strs1 = new String[2];
strs1[0] = o1.getName1();
strs1[1] = o2.getName1();
String[] strs2 = new String[2];
strs2[0] = o1.getName2();
strs2[1] = o2.getName2();
Arrays.sort(strs1, cmp);
Arrays.sort(strs2, cmp);
if (strs1[0].equals(strs1[1])) {
if (strs2[0].equals(strs2[1])) {
return 0;
}
if (strs2[0].equals(o1.getName2())) {
return -1;
} else {
return 1;
}
} else {
if (strs1[0].equals(o1.getName1())) {
return -1;
} else if (strs1[0].equals(o2.getName1())) {
return 1;
}
}
// 在这里实现你的比较
return 0;
}
};
Collections.sort(sabin, cmp);
[/code]
[code="java"]
// Collator 类是用来执行区分语言环境的 String 比较的,这里选择使用CHINA
Comparator cmp = Collator.getInstance(java.util.Locale.CHINA);
// 使根据指定比较器产生的顺序对指定对象数组进行排序。
Collections.sort(sabin, cmp);
[/code]
看看这样能满足你的要求不?
[code="java"]
Comparator cmp = new Comparator() {
public int compare(Person o1, Person o2) {
Comparator<Object> cmp = Collator.getInstance(java.util.Locale.CHINA);
// 在这里实现你的比较
return 0;
}
};
Collections.sort(sabin, cmp);
[/code]
Arrays.sort看看行不
搞定了,看看满足你的需求不?