java使用流更改ArrayList中对象字段的值,使代码更高效
我在一个ArrayList
中有有限数量的对象。我想在列表中查找字段中的特定值,然后对其进行更改
我有以下实现
String searchName = searchedName; //from outside we provide this
Person person = personList.stream()
.filter(personList -> searchName.equals(personList.getName()))
.findFirst()
.orElse(null);
if (person != null){
person.setName(replacement);
}
这段代码是有效的,但流不是我的专长,我的问题是:我能有相同的行为,但不需要额外的if吗?我觉得“如果”是额外的,我想让我的代码更有效率
一个附带的问题是,如果我们有多个同名的条目,有没有一种方法可以使用流,因此,我可以使用什么来将其存储在person对象或可能的新对象数组中,而不是“.findFirst().orElse(null)”
# 1 楼答案
您可以使用
Optional#isPresent
减少代码:但如果我的目标是性能,streams就不是我的第一选择
如果要处理所有满足谓词的对象: