我想按优先级从高到低对列表进行排序。这可以正常工作,但是我需要的是具有相同优先级的元素被颠倒(因为我首先需要最后添加的项)。我添加了name变量以快速查看原始顺序
一些代码需要澄清:
myList.add(new Test(-1,"first"));
myList.add(new Test(-1,"second"));
myList.add(new Test(-1,"third"));
myList.add(new Test(1, "fourth"));
myList.add(new Test(1, "fifth"));
public static class Test{
private int priority;
private String name;
public Test(int priority, String name) {
this.priority = priority;
this.name = name;
}
}
现在我这样做:
myList = Stream.of(myList).sortBy(r-> -r.priority).toList();
结果是:
第四,第五,第一,第二,第三
我想得到的结果是:
第五,第四,第三,第二,第一
我该怎么做(最好使用https://github.com/aNNiMON/Lightweight-Stream-API库)
答案 0 :(得分:0)
myList.stream().sorted((t1,t2) ->{
if (t1.priority == t2.priority)
return -1;
return -(Integer.compare(t1.priority, t2.priority));
}).collect(Collectors.toList())
您可以尝试这样
编辑:我在解决方案中修复了一些问题,您应该尝试rn