0

我在尝试对 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

4

2 回答 2

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]  
于 2013-02-10T20:56:05.287 回答
1

如果您想首先添加最近添加的,请在排序之前反转列表。Java List 排序是稳定的,保持相等项的顺序。在排序之前,您的目标应该是在目标顺序中拥有等值的项目。

于 2013-02-10T20:54:00.547 回答