您好,登录后才能下订单哦!
这篇文章主要介绍了java中list.forEach()和list.stream().forEach()的区别是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇java中list.forEach()和list.stream().forEach()的区别是什么文章都会有所收获,下面我们一起来看看吧。
首先,它们的功能都是遍历数组每个元素并执行入参的accept()方法,但是它们的实现方式却不一样,在一些特定的情况下,执行会出现不同的结果。
在大多数情况下,两者都会产生相同的结果,但是,我们会看到一些微妙的差异。
首先,创建一个迭代列表:
List<String> list = Arrays.asList("A","B","C","D");
最直接的方法是使用增强的for循环:
for(String s : list"){ //something }
如果我们想使用函数式Java,我们也可以使用forEach()。我们可以直接在集合上这样做:
Consumer<String> consumer = s -> {System.out::println}; list.forEach(consumer);
或者,我们可以在集合的流上调用forEach():
list.stream().forEach(consumer);
两个版本都将迭代列表并打印所有元素:
ABCD ABCD
在这个简单的例子中,我们使用的forEach()没有区别。
list.forEach()使用增强for循环
default void forEach(Consumer<? super T> action) { Objects.requireNonNull(action); for (T t : this) { action.accept(t); } }
list.stream().forEach(): 它首先将集合转换为流,然后对集合的流进行迭代
当一边遍历一边删除的时候,forEach能够快速失败,而stream().forEach()只有等到数组遍历完之后才会抛异常
public class DeleteDifference { public static void main(String[] args) { List<String> list = Arrays.asList("A", "B", "C", "D"); try { list.forEach(item -> { System.out.println(item); list.remove(0); }); } catch (Exception e) { e.printStackTrace(); } list.stream().forEach(item -> { System.out.println(item); list.remove(0); }); } }
关于“java中list.forEach()和list.stream().forEach()的区别是什么”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“java中list.forEach()和list.stream().forEach()的区别是什么”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。