gpt4 book ai didi

java - 使用 Java 流的此循环的聚合/缩减版本是什么?

转载 作者:行者123 更新时间:2023-11-30 09:09:01 25 4
gpt4 key购买 nike

我正在尝试加快 Streams API 的速度,但我真的习惯了 C# Linq 扩展函数的简单性和使用 yield 关键字创建迭代器的能力.通常我会使用:

list.Aggregate(set, (acc, a) => { acc.add(a.Id); return acc});

或类似的东西,但我没有立即看到它如何映射到 Streams API。

List<SomeObject> objs = ...

Set<String> ids = new HashSet<>();

for (SomeObject a : objs) {
ids.add(a.getId());
}

assertThat(ids.size(), objs.size());

编辑:在 for 循环中将 SomeObject.getId() 更改为 a.getId()。

最佳答案

以下语句应等同于示例中的 for 循环。

Set<String> ids = objs.stream()
.map(a -> a.getId())
.collect(Collectors.toSet());

您还可以使用方法引用代替lambda 表达式:

Set<String> ids = objs.stream()
.map(SomeObject::getId)
.collect(Collectors.toSet());

关于java - 使用 Java 流的此循环的聚合/缩减版本是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23249790/

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