我有一个对象列表。我需要更新列表中与我的过滤器匹配的单个对象。我可以做如下的事情:
List<MyObject> list = list.stream().map(d -> {
if (d.id == 1) {
d.name = "Yahoo";
return d;
}
return d;
});
但我担心的是我喜欢迭代整个列表,可能多达 20k 条记录。我可以执行一个 for 循环
,然后 break
,但我认为这个循环也会很慢。
有什么有效的方法可以做到这一点吗?
最佳答案
使用findFirst
,这样在列表中找到第一个匹配元素后,剩余元素将不会被处理
Optional<MyObject> result = list.stream()
.filter(obj->obj.getId()==1)
.peek(o->o.setName("Yahoo"))
.findFirst();
或者
//will not return anything but will update the first matching object name
list.stream()
.filter(obj->obj.getId()==1)
.findFirst()
.ifPresent(o->o.setName("Yahoo"));
关于java - 使用流更新列表中的单个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55624006/