sabin541 2009-01-15 16:04
浏览 425
已采纳

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);

系统也能实现分类排序,只是不知道排列的顺序是什么!!(按什么方式升序和降序)太感谢了

  • 写回答

5条回答 默认 最新

  • 桃片 2009-01-15 17:10
    关注

    [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]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler