gpt4 book ai didi

带有嵌套对象的 Java8 流

转载 作者:行者123 更新时间:2023-12-01 14:07:52 25 4
gpt4 key购买 nike

所以我是 Java8 的新手。我读过有关流的内容,但大多数示例都是非常基本的。我想知道如何处理嵌套对象。这是我的代码中的一个示例:

for (Gas gas : gases) {
resourceNodes.add(gas.getRefinery().unit());
}

似乎我应该能够用流将它单行,但我不太明白。有人可以通过流提供答案。有没有办法在嵌套方法中使用::语法?

编辑:为了阐明示例,getRefinery() 返回一个类型为:UnitInPool 的对象,其方法 unit() 返回一个类型为:Unit 的对象。 resourceNodes 是 Unit 的 ArrayList。

最佳答案

您所指的 :: 语法就是所谓的 method reference .


假设 resourceNodes 在 for 循环之前未分配(或为空,在这种情况下您可以删除任何先前的分配),那么您首先要 map每个 Gasunit() 返回的任何类型,然后 collect StreamList :

resourceNodes = gases.stream()
.map(Gas::getRefinery)
.map(GasRefinery::unit)
.collect(Collectors.toList());

否则,如果您的目标是简单地添加到 resourceNodes,那么它会非常相似:

resourceNodes.addAll(gases.stream()
.map(Gas::getRefinery)
.map(GasRefinery::unit)
.collect(Collectors.toList()));

关于带有嵌套对象的 Java8 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62109429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com