gpt4 book ai didi

java - Collections.sort 满足多种条件

转载 作者:行者123 更新时间:2023-12-02 08:21:16 26 4
gpt4 key购买 nike

我有一个要排序的对象列表。但我有三个不同的条件。这就是为什么我有这个代码:

Collections.sort(myList, new Comparator<MyObject>() {
@Override
public int compare(MyObject o1, MyObject o2) {
// my code
}
});

三次。首先对条件为 x 的所有元素进行排序到列表底部。然后第二次按条件 y 对所有元素进行排序到底部并再次查看条件 z .

现在我想知道如何在一个比较方法中组合多个条件。所以我不必这样做三次。

编辑:为了更清楚地了解条件。我想对具有条件 x 的所有对象进行排序到列表底部。如果元素满足条件 y它应该甚至低于 x这同样适用于 z 的模拟.

最佳答案

您可以使用 Java Streams。使用 Collection.sort() 时也会使用此值。 :

myList.sort(Comparator.comparing(MyObject::getAttributeX)
.thenComparing(i -> i.getSomething().getSubValue())
.thenComparing((a, b) -> a.getInt() - b.getInt()));

如果您使用的版本低于 Java 8,则必须在 Comparator 中自行实现排序逻辑或使用外部库:

Collections.sort(myList, new Comparator<MyObject>() {
@Override
public int compare(MyObject a, MyObject b) {
int cmp0 = a.getAttributeX().compareTo(b.getAttributeX());
if (cmp0 != 0) {
return cmp0;
}
int cmp1 = a.getSomething().getSubValue().compareTo(b.getSomething().getSubValue());
if (cmp1 != 0) {
return cmp1;
}
return a.getInt() - b.getInt();
}
});

关于java - Collections.sort 满足多种条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55163502/

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