Java Comparator.comparating使用嵌套对象对列表进行排序';s场
我想根据嵌套类的属性对如下所示的列表进行排序Java Comparator.comparating使用嵌套对象对列表进行排序';s场,java,lambda,java-8,comparator,Java,Lambda,Java 8,Comparator,我想根据嵌套类的属性对如下所示的列表进行排序 class Test { private NestedClass nestedClass; private AnotherNested anotherNested; private int id; //getter, setter } class NestedClass { private String field1; private int field2; // getter,
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);
您正在对
流
调用sorted
API,但没有进一步将排序后的流收集到列表
中。出于相同原因使用的代码行不会执行任何操作
要执行就地操作,您应该在列表
界面上调用排序
API,如下所示:
tests.sort(Comparator.comparing(test -> test.getNestedClass().getField1()));
或者完成流操作,作为终端操作收集数据,如中所示:
List<Test> sortedTests = tests.stream()
.sorted(Comparator.comparing(test->test.getNestedClass().getField1()))
.collect(Collectors.toList());
List sortedTests=tests.stream()
.sorted(Comparator.comparing(test->test.getNestedClass().getField1())
.collect(Collectors.toList());
不工作是什么意思?我在java.util.Collections$UnmodifiableList.sort(Collections.java:1331)中看到java.lang.UnsupportedOperationException:null作为您的答案@Naman@Jacob这取决于服务.getTests
调用返回的列表的类型。如果不可修改,更新后的解决方案将适用于您。请参见编辑。
List<Test> sortedTests = tests.stream()
.sorted(Comparator.comparing(test->test.getNestedClass().getField1()))
.collect(Collectors.toList());