gpt4 book ai didi

java - 与 Java 中的稳定排序相反(不稳定?)

转载 作者:行者123 更新时间:2023-12-01 07:01:59 25 4
gpt4 key购买 nike

我需要按 Java 中的对象的参数之一对对象列表进行排序。这工作得很好,当出现平局时,它会保持之前的顺序。

但是,我的目标是移植一些丑陋的代码,这些代码做了自己的排序,并且我必须保留相同的行为。在该算法中,如果出现平局,它会反转之前的顺序。

例如,如果我想按 int 对这些对象进行排序:

{ a, 1}
{ b, 2}
{ c, 1}

我的代码返回:a、c、b

我正在移植的代码返回:c, a, b

我现在的代码是:

final Comparator<MyObj> myComparator =
Comparator.comparingInt(MyObj::getSortWeight)
return myObjList
.stream()
.sorted(myComparator)
.map(//doing some other transformations here)
.collect(Collectors.toList());

有没有一种非 hacky 的方法可以让它像旧代码一样工作?我不想在这方面重新发明轮子。

最佳答案

如果目标是以相反的顺序获得相等的元素,您可以在排序之前简单地反转列表:

List<MyObj> copy = new ArrayList<>(myObjList);
Collections.reverse(copy);
return copy.stream()
.sorted(myComparator)
.map(//doing some other transformations here)
.collect(Collectors.toList());

关于java - 与 Java 中的稳定排序相反(不稳定?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43403762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com