【发布时间】:2022-01-19 21:14:43
【问题描述】:
我想使用 Java 8 流 API 转换以下代码
List<Card> deck = new ArrayList<>();
for (Suit s: Suit.values())
{
for (Rank r: Rank.values())
{
deck .add(new Card(r, s));
}
}
我想出了这个
List<Card> deck = new ArrayList<>();
Arrays.stream(Suit.values())
.forEach(s -> Arrays.stream(Rank.values())
.forEach(r -> deck.add(new Card(r, s))));
但我不喜欢它,因为它对列表有副作用。
是否有另一种优雅的方式,可以从流中生成列表?
【问题讨论】:
-
“它对列表有副作用”是什么意思?有什么副作用?
-
正如上面的评论所指出的,“副作用”是什么意思?您也可以尝试查看是否可以流式传输两个列表,然后将结果收集到新列表中。但请记住,使用流并不总是有效的,因为它们往往有很大的处理开销。
标签: java for-loop java-8 java-stream nested-loops