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看看行不

搞定了,看看满足你的需求不?