`
weicaijin8
  • 浏览: 34275 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

for,foreach,iterator的用法和区别

 
阅读更多
相同点:   三个都可以用来遍历数组和集合
不同点:1.形式差别
                 for的形式是
                for(int i=0;i<arr.size();i++){...}

                  foreach的形式是
                for(int i:arr){...}

                  iterator的形式是
               Iterator it = arr.iterator();
               while(it.hasNext()){ object o =it.next(); ...}


                 2.条件差别
                   for需要知道集合或数组的大小,而且需要是有序的,不然无法遍历;
                   foreach和iterator都不需要知道集合或数组的大小,他们都是得到集合内的每个元素然后进行处理;
             
                 3.多态差别
                 for和foreach都需要先知道集合的类型,甚至是集合内元素的类型,即需要访问内部的成员,不能实现态;
                   iterator是一个接口类型,他不关心集合或者数组的类型,而且他还能随时修改和删除集合的元素,举个例                     子:public void display(Iterator<object> it){
                                     while(it.hasNext()){
                                          system.out.print(it.next()+"");
                                     }
                                }          
                             当我们需要遍历不同的集合时,我们只需要传递集合的iterator(如arr.iterator())看懂了吧,这就                         是iterator的好处,他不包含任何有关他所遍历的序列的类型信息,能够将遍历序列的操作与序列底层的                       结构分离。迭代器统一了对容器的访问方式。这也是接口的解耦的最好体现。


                    4.用法差别
                       for循环一般用来处理比较简单的有序的,可预知大小的集合或数组
                       foreach可用于遍历任何集合或数组,而且操作简单易懂,他唯一的不好就是需要了解集合内部类型
                       iterator是最强大的,他可以随时修改或者删除集合内部的元素,并且是在不需要知道元素和集合的类   型的情况下进行的(原因可参考第三点:多态差别),当你需要对不同的容器实现同样的遍历方式时,迭代器是最好的选择!
分享到:
评论

相关推荐

    老生常谈foreach(增强for循环)和for的区别

    例如,在遍历 Map 集合时,foreach 语句可以使用 entrySet 方法来获取键值对的集合,而 for 语句可以使用 Iterator 迭代器来遍历集合。 foreach 语句和 for 语句都是 Java 编程语言中重要的循环语句,每种语句都有...

    详解Java中的增强 for 循环 foreach

    但是,如果我们想一边迭代,一边删除集合中的元素,就需要使用 iterator 迭代器中的 remove() 方法,例如: ```java Iterator it = list.iterator(); while(it.hasNext()){ Object obj = it.next(); System.out....

    Iterator迭代器讲解

    ### Iterator迭代器详解 #### 一、Iterator简介与概念 在Java编程语言中,`Iterator`接口是一个重要的组件,...无论是从设计模式的角度还是实际应用的角度来看,掌握`Iterator`的工作原理和使用方法都是非常重要的。

    Iterator详解

    为了避免这种情况,可以使用`Collections.synchronizedList()`或`CopyOnWriteArrayList`等线程安全的集合类,或者在迭代时使用`Iterator`的`remove()`方法而不是集合的`remove()`方法。 8. **迭代器应用**: 迭代...

    php下foreach提示Warning:Invalid argument supplied for foreach()的解决方法

    5. **`for` 与 `foreach` 的区别** - `for` 循环通常用于知道循环次数的情况,比如循环一定次数或条件满足时停止。 - `foreach` 专为遍历数组或可迭代对象设计,无需知道循环次数。 6. **`Iterator` 接口** ...

    Java学习之Iterator(迭代器)的一般用法

    总之,Iterator作为Java中处理集合数据的核心工具之一,掌握其基本用法和进阶特性,对于提高代码质量和编程效率具有不可忽视的作用。无论是基础的遍历操作,还是高级的双向迭代和元素操作,Iterator都提供了强大的...

    深入解读JavaScript中的Iterator和for-of循环

    JavaScript中的Iterator和for-of循环是ES6(ECMAScript 2015)规范中引入的重要特性。它们为遍历数据结构提供了一种更加简洁、直观且功能强大的方法。在介绍这两个概念之前,我们先来回顾一下传统的遍历方法。 在...

    Iterator迭代器的简单介绍与使用

    在上述代码中,首先通过`list.iterator()`获取迭代器,然后在`while`循环中使用`hasNext()`和`next()`方法依次取出并打印列表中的元素。 迭代器的实现原理在于,初始化时迭代器的索引位于第一个元素之前,不指向...

    java程序中foreach用法示例

    Java中的foreach循环,也被称为增强型for循环,是Java 5引入的一项重要特性,它极大地简化了对数组和集合的迭代操作。以下是关于Java程序中foreach用法的详细解释: **1. foreach循环的基本语法** Java中的foreach...

    Java增强for循环中获取index

    在Java编程语言中,增强的for循环(也称为foreach循环)是Java 5引入的一个重要特性,它简化了数组和集合的迭代。然而,增强for循环本身并不直接提供索引访问,这与传统的for循环不同。传统for循环可以让我们通过...

    Iterator的使用

    3. **并发迭代器**:在多线程环境下,Java的`ConcurrentSkipListSet`和`ConcurrentLinkedQueue`等并发集合类提供了`iterator()`方法,返回的迭代器能够安全地在并发环境中使用。 总之,迭代器是访问聚合对象的常用...

    ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)

    在ES5中,遍历数组通常使用`for`循环,或者使用`forEach()`方法;遍历对象则使用`for-in`循环。然而,ES6新增了`Map`和`Set`等数据结构,并引入了`for-of`循环,这是专门为消费迭代器设计的。这意味着,有了迭代器,...

    js中forEach,for in,for of循环的用法示例小结

    本文将深入探讨三种常见的循环方法:`forEach`、`for...in` 和 `for...of`,并提供它们的使用示例。 1. **`forEach` 循环** `forEach` 是 JavaScript 中专为数组设计的迭代方法,它会遍历数组中的每个元素,并对每...

    13.foreach循环_java_

    在Java编程语言中,`foreach`循环,也称为增强型for循环或迭代器循环,是处理数组和集合数据的一种简洁高效的方式。这个小视频详细介绍了如何在Java中正确使用`foreach`循环,让我们深入探讨一下相关知识点。 首先...

    angular forEach方法遍历源码解读

    下面我们将深入探讨`forEach`方法的工作原理、用法以及相关知识点。 首先,我们来看`forEach`方法的定义: ```javascript function forEach(obj, iterator, context) { var key, length; // ... } ``` 这里的`obj...

    Iterator Pattern(迭代模式)

    4. **增强for循环(foreach)**:Java的增强for循环本质上是迭代器模式的一个语法糖。 ### 源码分析 在给定的压缩包文件中,"DesignPattern.oom"可能是用UML(统一建模语言)绘制的迭代模式类图,它可以帮助我们...

    ES6新特性二:Iterator(遍历器)和for-of循环详解

    在ES6之前,遍历数组的方式有多种,例如使用for循环、forEach方法和for-in循环。然而,这些方式都有其缺陷,例如for-in循环会遍历数组的所有属性,包括自定义属性。 使用for-of循环可以避免这些缺陷,正确地遍历...

    java代码-生成6个1~33之间的随机整数,添加到集合,并遍历集合

    在Java中,遍历ArrayList有两种常见方式:使用迭代器和使用增强型for循环(foreach)。这里展示两者的方法: **使用迭代器:** ```java Iterator&lt;Integer&gt; iterator = randomNumbers.iterator(); while (iterator....

Global site tag (gtag.js) - Google Analytics