对LinkedList中具有相同值的项进行排序??? - java

时间:2013-02-10 20:50:03

标签: java sorting linked-list

我在尝试对LinkedList进行排序时遇到问题。 我使用了以下代码:

Collections.sort(mylist, new Comparator<String[]>() {
            public int compare(String[] o1, String[] o2) {
                int one= Integer.parseInt(o1[1]);
                int two = Integer.parseInt(o2[1]);
                return one-two;
            }
        });

这里我提出了一些值:

    thelist.testing("a",1);
    thelist.testing("b",5);
    thelist.testing("c",5);
    thelist.testing("d",5);
    thelist.testing("e",7);
    System.out.println(thelist);

我有以下结果:a:1,b:5,c:5,d:5,e:7

当项目具有相同的数字时,我希望输出是这样的:a:1,d:5,c:5,b:5,e:7

2 个答案:

答案 0 :(得分:2)

只是做:

Collections.sort(mylist, new Comparator<String[]>() {  
            public int compare(String[] o1, String[] o2) {  
                if(o1[1].equals(o2[1]){  
                   return -(o1[0].compareTo(o2[0]));
                }  

                int one= Integer.parseInt(o1[1]);
                int two = Integer.parseInt(o2[1]);
                return one-two;
            }
        });

示例代码:

List<String[]> mylist = new ArrayList<String[]>();  
mylist.add(new String[]{"a","1"});  
mylist.add(new String[]{"b","5"});  
mylist.add(new String[]{"c","5"});  
mylist.add(new String[]{"d","5"});  
mylist.add(new String[]{"e","7"});  

输出:

[a, 1]  
[d, 5]  
[c, 5]  
[b, 5]   
[e, 7]  

答案 1 :(得分:1)

如果您想要最近添加的第一个,请在排序之前反转列表。 Java List排序是稳定的,保留了相同项的顺序。您应该在排序之前将目标订单中的等值项目作为目标。