我正在使用java-8修改对象
users.stream().filter(u -> u.count > 0).forEach(u -> u.setProperty("value"))
Run Code Online (Sandbox Code Playgroud)
但是,我想了解是否有任何对象被修改...即,我想要一个布尔返回值,而这是无效的.
有办法吗?
如果我找到你,你想知道在执行操作时是否有任何匹配.你可以简单地使用两个语句.
boolean anyMatch = users.stream().anyMatch(u -> u.count > 0);
if(anyMatch) users.stream().filter(u -> u.count > 0).forEach(u -> u.setProperty("value"));
Run Code Online (Sandbox Code Playgroud)
由于anyMatch在第一个匹配元素处停止,因此只有在第一个匹配之前存在非匹配元素的长前缀时才会有冗余工作.
如果这是一个问题,你可以使用
Spliterator<User> sp = users.stream().filter(u -> u.count > 0).spliterator();
boolean anyMatch = sp.tryAdvance(u -> u.setProperty("value"));
sp.forEachRemaining(u -> u.setProperty("value"));
Run Code Online (Sandbox Code Playgroud)
代替.
| 归档时间: |
|
| 查看次数: |
58 次 |
| 最近记录: |