Den*_*nov 3 java arrays lambda
有一些优雅的方法来查找和修改java中的某些特定对象吗?我有这样的方法:
public update(MyObj o) {
for (MyObj objToModify: DATA) {
if (objToModify.getId() == o.getId()) {
objToModify.setName(o.getName());
// and so on ...
}
}
}
Run Code Online (Sandbox Code Playgroud)
例如,是否可以重写为 lambda 或 Java 8 的某些其他功能?我有很多属性,所以我更喜欢一些我无法手动设置所有新属性的选项。
您可以通过以下方式执行此操作,即使有多个匹配,这也会遍历整个流并更新元素:
DATA.stream().filter(a -> a.getId() == o.getId()).forEach(a -> a.setName(o.getName()));
Run Code Online (Sandbox Code Playgroud)
或者,如果您确定只需要更新一个元素:
DATA.stream().filter(a -> a.getId() == o.getId()).
findAny().ifPresent(a -> a.setName(o.getName()));
Run Code Online (Sandbox Code Playgroud)
NullPointerException如果 DATA 具有与原始解决方案相同的 null 元素,则两种解决方案都会抛出异常,如果这是一种可能性并且您想阻止它,您还需要a检查filter.
| 归档时间: |
|
| 查看次数: |
2612 次 |
| 最近记录: |