我想根据嵌套类的属性对如下所示的列表进行排序。
class Test {
private NestedClass nestedClass;
private AnotherNested anotherNested;
private int id;
//getter, setter
}
class NestedClass {
private String field1;
private int field2;
// getter,setter
}
List<Test> tests = service.getTests(string something);
我想使用 Comparator.comparing 按 nestedClass
中的 field1
对测试进行排序。我在下面尝试过,但似乎不起作用
tests.stream().sorted(Comparator.comparing(test->test.getNestedClass().getField1()));
最佳答案
您正在调用sorted
API Stream
但不将排序后的流收集到List<Test>
中更远。出于同样的原因,您使用的代码行不会执行任何操作。
要执行就地操作,您应该调用 sort
API List
界面为:
tests.sort(Comparator.comparing(test -> test.getNestedClass().getField1()));
或者完成收集数据的流操作作为终端操作,如下所示:
List<Test> sortedTests = tests.stream()
.sorted(Comparator.comparing(test->test.getNestedClass().getField1()))
.collect(Collectors.toList());
关于java - Comparator.comparing 使用嵌套对象的字段对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60905596/