Ⅰ 在java中,foreach 和 iterator遍历集合时,那个效率更高一些
你好,前者效率更高
原因是for直接针对集合里的下一个对象
而iterator其实相当于是一个指针,这样说不准确,但是可以这样理解,每次执行它会先查找当前指向的对象,然后指针再指向下一个位置
所以说,如果有指针概念的话,for的“针对”直接是简单数据,而iterator的指针却是一个对象
Ⅱ Java的for循环、增强for循环、lambda表达式中的forEach 三种方式优缺点比较
个人理解不喜勿喷。
简单的来说其实三种并没有什么太大的区别,一般情况下的性能也差不多。
for循环:
优点:可以直接获取下标,能更精确的定位。下标变量属于循环内变量,循环结束会自动回收。下标变量的步长可以自定,比较灵活。
缺点:需要根据下标才会获取循环内容。只能循环有序集合和数组,如Set和Map就无法遍历。
增强for:
优点:循环直接进行赋值,直接得到循环对象,不需要通过下标获取。可以遍历所有集合类型和数组。
缺点:循环有序集合时无法定位下标,需要在循环外层定义下标。无法遍历Map类型。
lambda:
优点:可以对所有集合类型和Map进行循环,特别是支持对Map进行循环,循环也是直接进行赋值,直接得到循环对象。
缺点:循环有序集合时无法定位下标,无法遍历数组,因为理论上来说他是属于迭代器的一种。同时因为循环体属于一个封闭范围的线程,在循环体内使用部分循环体外的变量需要加final关键字,很不方便。
另外说到了迭代器,可以参考lambda,不过写法就没lmbda那么方便了,不过迭代器有很多功能是循环比不上的,可以去看看。
Ⅲ java foreach有什么用
java1.5发行版中引入for-each循环,通过隐藏迭代器或者索引变量,避免混乱或者出错的可能。其次foreach的效率比简单for的效率更高,除此之外,有三种情况无法使用for
each循环
1.
过滤:遍历集合,并删除特定元素,这时候需要用迭代器
2.
转换:遍历列表或者数组,并取代它部分或者全部的元素值,需要迭代器或者数组索引。
3.
平行迭代:如果需要并行地遍历多个集合
Ⅳ Java的foreach怎么用
foreach语句是java5的新特征之一,在遍历数组、集合方面,foreach为开发人员提供了极大的方便。
foreach 语法格式如下:
注意事项:
foreach不支持在循环中添加删除操作,因为在使用foreach循环的时候数组(集合)就已经被锁定不能被修改,否则会报出java.util.异常。