gpt4 book ai didi

java - 在Java中按列表中的对象中的枚举和整数排序?

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

我的程序中有这个类和枚举(名称已更改和简化):

public enum Types {
FIRST, SECOND, THIRD
}
public class TestClass {
Types types;
int num;
public TestClass(Types types, int num) {
this.types = types;
this.num = num;
}

现在假设我在 ArrayList 中有 TestClass 对象,如下所示:

ArrayList<TestClass> list = new ArrayList<>();
list.add(new TestClass(Types.THIRD, 2);
list.add(new TestClass(Types.THIRD, 1);
list.add(new TestClass(Types.FIRST, 3);
list.add(new TestClass(Types.FIRST, 1);
list.add(new TestClass(Types.FIRST, 2);

我想首先根据枚举对列表进行排序,然后根据数字对列表进行排序,这样最终结果将是这样的:

[(Types.FIRST, 1), (Types.FIRST, 2), (Types.FIRST, 3), (Types.THIRD, 1), (Types.THIRD, 2)] 

我发现我可以使用比较器,但我不确定如何按枚举排序,然后按枚举内的数字排序。两个比较器?嵌套比较器?最佳解决方案是什么?

最佳答案

您使用的是 Java 8 吗?如果是这样,你可以写

Comparator<TestClass> comparator = 
comparing(tc -> tc.types)
.thenComparingInt(tc -> tc.num);

...然后你可以写

list.sort(comparator);

关于java - 在Java中按列表中的对象中的枚举和整数排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35003434/

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