我是靠谱客的博主 默默棒棒糖,最近开发中收集的这篇文章主要介绍关于Foreach的简单理解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

foreach是java中循环的一种,用于便利数组或者集合中的元素。for循环用于遍历数组的时候需要预先知道数组的大小。而foreach和iterator便利集合时不需要知道数组或者集合的大小。

一般来说,我们遍历已知类型数组的话一般采用foreach循环的形式。而我很久之前听过一个前辈说过,如果集合为空的话那么运行时将会报空指针的错误,今天来验证一下。

首先建立一个空的数组,利用foreach循环遍历下

结果是能运行成功,并没有报空指针的异常。

接下来测试下list为空指针时

结果会报空指针异常。通过这个结果我们进一步debug一下,发现如果是空list的话,是不会进入foreach循环的内部的。而如果是空指针的话,在foreach判断阶段则报了异常。

接下来我们测试下iterator迭代器。

可以看出,在空数组的情况下,iterator迭代其是不会报错的。那么空指针的情况下呢

抛出了空指针异常,而且抛出的异常是在标注的位置。既然这样,那么foreach和iterator是不是有什么内在的关联呢。我查询了list的父类Collection,发现它继承了Iterable类

而Iterable类里面有定义iterator对象。foreach其实也是通过iterator而实现的,故和iterator具有相同的性质。

那么问题来了,我们什么情况下改用foreach,什么情况下用iterator呢。通过资料查询,得知iterator是不需要判断集合的类型的,所以我们在不知道集合类型的情况下完全可以用iterator来实现。但是foreach就不行了

这样我们可以处理我们不知道类型的集合遍历。接下来我们进行一下效率的对比。选取100000000个元素的数组,分别用list和iterator进行循环遍历

首先是iterator

总耗时15

接下来是foreach

总好是146.可见效率天差地别

最后

以上就是默默棒棒糖为你收集整理的关于Foreach的简单理解的全部内容,希望文章能够帮你解决关于Foreach的简单理解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部