JAVA中修改顺序表中的元素_java – 在列表中查找元素并使用stream()更改它
如果您的目標是只找到一個元素,那么您可以這樣做
MyItem item = l.stream()
.filter(x -> x.getValue() > 10)
.findAny() // here we get an Optional
.orElseThrow(() -> new RuntimeException("Element 10 wasn't found"));
item.setAnotherValue(4);
在Java 9中,使用ifPresentOrElse,這可以稍微簡化為(遺憾的是,syntax() – > {throw new RuntimeException();}也有點笨拙,但AFAIK它不能簡化):
l.stream()
.filter(x -> x.getValue() > 10)
.findAny() // here we get an Optional
.ifPresentOrElse(x->x.setAnotherValue(5),
()->{throw new RuntimeException();});
如果你想為所有項目做這件事,你可以試試這樣的事情.但由于Java 8 Streams不是為了通過副作用而設計的,所以這不是一個非常干凈的方法:
AtomicBoolean b = new AtomicBoolean(false);
l.stream()
.filter(x -> x.getValue() > 10)
.forEach(x->{
x.setAnotherValue(5);
b.set(true);
});
if (b.get()){
throw new RuntimeException();
}
當然,您也可以簡單地將元素收集到列表中,然后執行操作.但我不確定這是否比你開始使用的簡單for循環有任何改進……
好吧,如果forEach返回一個long,表示調用它的元素數量,這將更容易……
總結
以上是生活随笔為你收集整理的JAVA中修改顺序表中的元素_java – 在列表中查找元素并使用stream()更改它的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 输卵管轻度粘连会怀孕吗
- 下一篇: java activemq 断线_jav