java stream.foreach

java stream流foreach操作,在foreach中做了许多操作,现需要一个标识判断foreach中做没做操作,但是stream.foreach中不支持对外部变量进行赋值,虽然可以给外部List进行add操作,但是我只需要一个标识List的话有点浪费资源,我应该怎么做?若是stream.foreach实在就是做不了这个标识,请评论“做不了”即可

可以的,用线程安全的布尔


 AtomicBoolean flag = new AtomicBoolean(false);
        List<String> list = new ArrayList<>();
        list.forEach(item -> {
            flag.set(true);
        });

在foreach中做了许多操作,现需要一个标识判断foreach中做没做操作,什么意思?如果内部判断都没进去则代表没有操作吗?
首先回答你:
可以做标识的。
我写了一个代码案例:

img


输出结果为:false

img

我觉得做不了,可以考虑用for,没必要死磕stream

【相关推荐】



  • 这篇文章:java中for、foreach、stream性能比较 也许有你想要的答案,你可以看看
  • 除此之外, 这篇博客: java中for、foreach(增强for)和stream中foreach的性能和原理中的 结论 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    1. 需要循环数组结构的数据时,建议使用普通for循环,因为for循环采用下标访问,对于数组结构的数据来说,采用下标访问稍微好点,而且还可以满足对list本身的修改。
    2. 需要循环链表结构的数据时,一定不要使用普通for循环,这种做法很糟糕,数据量大的时候有可能会导致系统崩溃,foreach循环性能虽好但是无法修改list本身,可以优先考虑使用stream。

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^