java - 使用流 Java 8 获取属性数组、属性数组(嵌套属性)

标签 java java-8 java-stream

基于此Question ...

我有这个代码:

List<IdDTO> ids = collectionEntityDTO.stream().map(EntityDTO::getId).collect(Collectors.toList());
List<Long> codes = ids.stream().map(IdDTO::getCode).collect(Collectors.toList());
Long[] arrayCodes = codes.toArray(new Long[0]);

如何以这种简单的方式做到这一点?

最佳答案

您的方法效率很低,只需链接方法:

collectionEntityDTO.stream()
        .map(EntityDTO::getId)
        .map(IdDTO::getCode)
        .toArray(Long[]::new);

这种方法更好,因为:

  • 更容易阅读正在发生的事情

  • 如前所述,它更高效,因为不需要急切 在每个中间步骤创建新的集合对象。

  • 垃圾变量不会造成困惑。
  • 更容易并行化。

关于java - 使用流 Java 8 获取属性数组、属性数组(嵌套属性),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53733215/

相关文章:

java - Stream.forEach 期间出现空指针异常

Java 8 从 CSV 流过滤行但保留第一行

java - 使用 java 从生成的 xml 文档中删除 xml 声明

java - 在图内插入顶点

java - org.apache.catalina.LifecycleException : Failed to start component [StandardEngine[Catalina]. StandardHost[本地主机]

java - 将 List 转换为 Map 并过滤空键

Java8 可选和 null 检查

java - 为什么我的 setLocation(x,y) 不起作用?

java - 收集器的组合器功能可以用于顺序流吗?

java - 在 Java 中使用 stream.sorted() 进行排序