我想按先验从高到低对列表进行排序。这工作正常,但我需要的是具有相同优先级的元素被颠倒(因为我首先需要最后添加的项目)。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 库)
myList.stream().sorted((t1,t2) ->{
if (t1.priority == t2.priority)
return -1;
return -(Integer.compare(t1.priority, t2.priority));
}).collect(Collectors.toList())
你可以这样尝试
编辑:我修复了解决方案中的一些东西,你应该尝试一下
rn