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

时间:2018-12-11 22:20:22

标签: 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]);

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

1 个答案:

答案 0 :(得分:4)

您的方法效率很低,只需将方法链接起来即可:

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

这种方法更好,因为:

  • 阅读正在发生的事情

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

  • 没有乱码的混乱情况。
  • 易于并行化。