java - Comparator.comparing 使用嵌套对象的字段对列表进行排序

标签 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,setter
}

List<Test> tests = service.getTests(string something);

我想使用 Comparator.comparingnestedClass 中的 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/

相关文章:

Microsoft 时区的 java.time.zone.ZoneRulesProvider

java - 通过 1 遍查找链表的中间元素,这是创意 "useless answer"吗?

java - 如何减少 JAXB 上下文开销?

node.js - 如何下载图像并将S3放入lambda Nodejs中

lambda - 具有 Cognito 用户池授权者和 Lambda 的 API 网关

node.js - 如何与亚马逊 IoT 可编程按钮的 LED 灯交互

java - CompletableFuture<T> 类 : join() vs get()

java - keycloak 离线 token ​​与 Java

java - Eclipse 提示无法执行操作,因为连接池已关闭

scala - 为什么 Scala HashMap 很慢?