我在尝试对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
答案 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排序是稳定的,保留了相同项的顺序。您应该在排序之前将目标订单中的等值项目作为目标。