按优先级对列表进行排序,然后颠倒具有相同优先级的元素的顺序



我想按先验从高到低对列表进行排序。这工作正常,但我需要的是具有相同优先级的元素被颠倒(因为我首先需要最后添加的项目)。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

最新更新