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());