如何修改和检查是否在java - 8中修改了?

Tan*_*ant 4 java java-8

我正在使用java-8修改对象

users.stream().filter(u -> u.count > 0).forEach(u -> u.setProperty("value"))
Run Code Online (Sandbox Code Playgroud)

但是,我想了解是否有任何对象被修改...即,我想要一个布尔返回值,而这是无效的.

有办法吗?

Hol*_*ger 6

如果我找到你,你想知道在执行操作时是否有任何匹配.你可以简单地使用两个语句.

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)

代替.

  • 阅读问题 - >嘿,分裂器的完美案例 - >写下来 - >阅读你的答案:| - >删除我的 - >赞成你的 (2认同)