【java细节】for循环,for-each(增强for循环),forEach以及Iterator迭代器对比

【java细节】for循环,for-each(增强for循环),forEach以及Iterator迭代器对比

一、背景和结论

背景是这样的,产品开发过程中,有个字体json文件需要截取的接口开发,因为涉及到多层的json内容遍历,于是就和循环过不去了。这篇文章主要讨论java中for循环,for-each(增强for循环),forEach以及Iterator迭代器的区别和联系。结论先行:
联系:

  • 1.作用相同.都是用于队数组或者集合进行遍历

区别

  • 效率差别: for循环,for-each循环Iterator效率差不多,forEach要慢些。
  • 条件区别: for循环需要知道数组或者集合的大小才能进行遍历,而for-eachforEachIterator不需要
  • 多态区别: for循环for-eachforEach都需要先知道集合的类型,甚至是集合内元素的类型,即需要访问内部的成员,不能实现多态;
    Iterator是一个接口类型,他不关心集合或者数组的类型,而且他还能随时修改和删除集合的元素,举个例子:
Iterator iterator = integerList.iterator();
        while (iterator.hasNext()) {
   
            Integer integer = (Integer) iterator.next();
        }

当我们需要遍历不同的集合时,我们只需要传递集合的iterator,如integerList.iterator(),这就 是Iterator 的好处,他不包含任何有关他所遍历的集合的类型信息,能够将遍历集合的操作与集合底层的数据结构分离。迭代器统一了对集合的访问方式。这也是接口解耦的最佳实践之一。

  • 适用场景区别:
    for循环一般用来处理比较复杂的循环,可预知大小的集合或数组。因为涉及索引的操作,**可能会由于开发者的问题导致索引混乱,因此不太安全。**涉及集合元素更新操作的建议用for循环。
    for-each可用于遍历任何集合或数组,而且操作简单易懂,但是需要了解集合内部数据类型,并且不适合有数组元素更新操作的循环。
    forEach 基本和Iter
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值