相同点: 三个都可以用来遍历数组和集合
不同点: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是最强大的,他可以随时修改或者删除集合内部的元素,并且是在不需要知道元素和集合的类 型的情况下进行的(原因可参考第三点:多态差别),当你需要对不同的容器实现同样的遍历方式时,迭代器是最好的选择!
分享到:
相关推荐
例如,在遍历 Map 集合时,foreach 语句可以使用 entrySet 方法来获取键值对的集合,而 for 语句可以使用 Iterator 迭代器来遍历集合。 foreach 语句和 for 语句都是 Java 编程语言中重要的循环语句,每种语句都有...
但是,如果我们想一边迭代,一边删除集合中的元素,就需要使用 iterator 迭代器中的 remove() 方法,例如: ```java Iterator it = list.iterator(); while(it.hasNext()){ Object obj = it.next(); System.out....
### Iterator迭代器详解 #### 一、Iterator简介与概念 在Java编程语言中,`Iterator`接口是一个重要的组件,...无论是从设计模式的角度还是实际应用的角度来看,掌握`Iterator`的工作原理和使用方法都是非常重要的。
为了避免这种情况,可以使用`Collections.synchronizedList()`或`CopyOnWriteArrayList`等线程安全的集合类,或者在迭代时使用`Iterator`的`remove()`方法而不是集合的`remove()`方法。 8. **迭代器应用**: 迭代...
5. **`for` 与 `foreach` 的区别** - `for` 循环通常用于知道循环次数的情况,比如循环一定次数或条件满足时停止。 - `foreach` 专为遍历数组或可迭代对象设计,无需知道循环次数。 6. **`Iterator` 接口** ...
总之,Iterator作为Java中处理集合数据的核心工具之一,掌握其基本用法和进阶特性,对于提高代码质量和编程效率具有不可忽视的作用。无论是基础的遍历操作,还是高级的双向迭代和元素操作,Iterator都提供了强大的...
JavaScript中的Iterator和for-of循环是ES6(ECMAScript 2015)规范中引入的重要特性。它们为遍历数据结构提供了一种更加简洁、直观且功能强大的方法。在介绍这两个概念之前,我们先来回顾一下传统的遍历方法。 在...
在上述代码中,首先通过`list.iterator()`获取迭代器,然后在`while`循环中使用`hasNext()`和`next()`方法依次取出并打印列表中的元素。 迭代器的实现原理在于,初始化时迭代器的索引位于第一个元素之前,不指向...
Java中的foreach循环,也被称为增强型for循环,是Java 5引入的一项重要特性,它极大地简化了对数组和集合的迭代操作。以下是关于Java程序中foreach用法的详细解释: **1. foreach循环的基本语法** Java中的foreach...
在Java编程语言中,增强的for循环(也称为foreach循环)是Java 5引入的一个重要特性,它简化了数组和集合的迭代。然而,增强for循环本身并不直接提供索引访问,这与传统的for循环不同。传统for循环可以让我们通过...
3. **并发迭代器**:在多线程环境下,Java的`ConcurrentSkipListSet`和`ConcurrentLinkedQueue`等并发集合类提供了`iterator()`方法,返回的迭代器能够安全地在并发环境中使用。 总之,迭代器是访问聚合对象的常用...
在ES5中,遍历数组通常使用`for`循环,或者使用`forEach()`方法;遍历对象则使用`for-in`循环。然而,ES6新增了`Map`和`Set`等数据结构,并引入了`for-of`循环,这是专门为消费迭代器设计的。这意味着,有了迭代器,...
本文将深入探讨三种常见的循环方法:`forEach`、`for...in` 和 `for...of`,并提供它们的使用示例。 1. **`forEach` 循环** `forEach` 是 JavaScript 中专为数组设计的迭代方法,它会遍历数组中的每个元素,并对每...
在Java编程语言中,`foreach`循环,也称为增强型for循环或迭代器循环,是处理数组和集合数据的一种简洁高效的方式。这个小视频详细介绍了如何在Java中正确使用`foreach`循环,让我们深入探讨一下相关知识点。 首先...
下面我们将深入探讨`forEach`方法的工作原理、用法以及相关知识点。 首先,我们来看`forEach`方法的定义: ```javascript function forEach(obj, iterator, context) { var key, length; // ... } ``` 这里的`obj...
4. **增强for循环(foreach)**:Java的增强for循环本质上是迭代器模式的一个语法糖。 ### 源码分析 在给定的压缩包文件中,"DesignPattern.oom"可能是用UML(统一建模语言)绘制的迭代模式类图,它可以帮助我们...
在ES6之前,遍历数组的方式有多种,例如使用for循环、forEach方法和for-in循环。然而,这些方式都有其缺陷,例如for-in循环会遍历数组的所有属性,包括自定义属性。 使用for-of循环可以避免这些缺陷,正确地遍历...
在Java中,遍历ArrayList有两种常见方式:使用迭代器和使用增强型for循环(foreach)。这里展示两者的方法: **使用迭代器:** ```java Iterator<Integer> iterator = randomNumbers.iterator(); while (iterator....