`
adoph
  • 浏览: 5381 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

for循环 增强for循环 iterator遍历集合的区别与用法

 
阅读更多
1.手先增强for循环和iterator遍历的效果是一样的,也就说
增强for循环的内部也就是调用iteratoer实现的,但是增强for循环 有些缺点,例如不能在增强循环里动态的删除集合内容。不能获取下标等。
2.ArrayList由于使用数组实现,因此下标明确,最好使用普通循环。
3.而对于 LinkedList 由于获取一个元素,要从头开始向后找,因此建议使用 增强for循环,也就是iterator。
对于ArrayList,Vector 其核心是一个数组, 如果明确知道List的实例是ArrayList,Vector,当然用 for(int i=0; i<lst.size();i++){} 这种方式是最快的.  当然用Iterator 的话,其实是相关无几,Iterator 基本上都是指针操作, Iterator本身的处理会增加一点点的开销,跟踪一下源码就可以知道.

Iterator 好处:通用,对于所有集合,使用Iterator性能都一样, 客户端自身不维护遍历集合的"指针",所有的内部状态(如当前元素位置,是否有下一个元素)都由Iterator来维护,而这个Iterator由集合类通过工厂方法生成,因此,它知道如何遍历整个集合。
客户端从不直接和集合类打交道,它总是控制Iterator,向它发送"向前","向后","取当前元素"的命令,就可以间接遍历整个集合。

for(i=0;...) 方法有一个缺点: 如果List的实例是LinkedList等非"数组"存储方式的时候,遍历集合的开销会差别很大! 就以LinkedList来说,以下是get(i)方法来取元素的主要代码, 我们可以看到,LinkedList 内的get(i)方法,用了循环方式来返回元素,性能肯定会差.

------------------------------------------------
Iterator和 for each的区别:
1.for each 不能删除集合元素
2.Iterator 只能使用自身的remove()方法来删除元素,不能用集合的删除操作
3.ArrayList里,for循环较快,LinkedList里,使用iterator较快

总结:这两种遍历方式各有特色,优势各有不同,在处理不同情景下的数据,利用好它们的长处能使程序运行的更好。
分享到:
评论

相关推荐

    for,foreach,iterator的用法和区别

    "for、foreach、iterator的用法和区别" 在 Java 编程语言中,for、foreach 和 iterator 是三种常用的遍历数组和集合的方法。它们之间有相似之处,但也存在着许多不同之处。 相同点:三者都可以用来遍历数组和集合...

    java 使用foreach遍历集合元素的实例

    在Java编程语言中,`foreach`循环是一种简洁的遍历集合元素的方式,它引入自Java 5(JDK 1.5)。`foreach`循环也被称为增强for循环,它的主要目的是简化对数组和集合的迭代操作。在本实例中,我们将深入探讨如何使用...

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

    在实际开发中,我们经常看到增强型for循环(也称为foreach循环)被用于遍历集合,其实内部也是利用了迭代器的原理。增强型for循环的语法更加简洁,但它隐藏了迭代器的细节,使得代码更加易于理解和编写。 ```java ...

    详解Java中Iterable与Iterator用法

    for each循环实际上是依赖于Iterator迭代器的,只不过Java提供的语法糖使得我们可以更方便地遍历集合中的元素。 for (Integer i : list) { System.out.print(i + ","); } 反编译后,我们可以看到for each循环实际...

    在struts2中要实现for循环

    `&lt;s:iterator&gt;`标签是Struts2中最常用的标签之一,它可以用来遍历集合(如List、Set、Map等)。但是,如果想要实现类似Java中的`for`循环功能,可以利用`org.apache.struts2.util.Counter`类来实现。 ### 实现步骤 ...

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

    总的来说,for-of循环与Iterator的配合使用,提供了统一且简洁的遍历语法,使得操作数据结构时更加直观高效。它解决了for-in循环存在的问题,并且让ES6中新增的集合类型(如Set和Map)的遍历变得轻而易举。通过理解...

    Java for循环的几种用法分析

    Java for循环是编程中最常用的控制流...传统for循环提供了更多的控制,而增强型for循环则提供了一种简洁、易读的方式来遍历数组和集合,尤其适用于只读操作。在选择使用哪种循环时,应根据具体需求和代码可读性来决定。

    java程序的四种遍历

    增强型for循环是Java 5引入的一种新特性,它使得遍历集合变得更加简洁。这种方式不需要显式地管理索引,可以更加专注于处理集合中的元素。代码示例中已经给出了这种遍历方式的例子: ```java for (User u : user...

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

    以下是一个使用Iterator遍历集合的示例: ```java List&lt;String&gt; list = new ArrayList(); list.add("a"); list.add("b"); list.add("c"); Iterator&lt;String&gt; iterator = list.iterator(); while (iterator.hasNext...

    java集合_浅谈Iterable和Iterator的区别

    这个接口的存在使得任何实现它的类都可以被用于`for-each`循环(增强for循环),这是一种简洁且易于理解的遍历集合元素的方式。例如,`Collection`、`List`和`Set`都是`Iterable`接口的实现类,因此可以使用`for-...

    s:iterator 用法.docx

    Struts2 框架中的 `s:iterator` 标签是用于遍历集合、数组、Map 或者数据栈中的对象的重要组件。这个标签提供了一种便捷的方式来在 JSP 页面上展示动态数据,使得开发者能够方便地循环遍历并显示元素。下面我们将...

    s:iterator 用法.pdf

    Struts2框架中的`s:iterator`标签是用于循环遍历数据集合的重要标签,适用于处理数组、列表、Map等数据结构。下面将详细讲解这个标签的用法及其各种属性。 1. **基本用法** `s:iterator`标签的基础用法是通过`...

    javaList用法

    * 使用 for 循环遍历 List 集合:可以使用 for 循环遍历 List 集合,例如使用 get(int index) 方法获得指定索引位置的元素。 List 集合的应用场景 List 集合的应用场景非常广泛,例如: * 存储数据:List 集合...

    Java实现Map集合遍历的四种常见方式与用法分析

    Java实现Map集合遍历的四种常见方式与用法分析 Map集合是Java中的一种常见的数据结构,用于存储键值对形式的数据。在实际开发中,我们经常需要遍历Map集合来获取键和值。本文将介绍Java实现Map集合遍历的四种常见...

    第7天(集合【迭代器、增强for、泛型】)v201703101

    增强的`for`循环(也称为foreach循环)是Java 5引入的新特性,它简化了遍历集合的过程。对于实现了`Iterable`接口的集合,可以直接使用增强for循环来遍历元素,例如: ```java for (Type element : collection) { /...

    s:iterator 用法 (2).pdf

    Struts2框架中的`s:iterator`标签是用于循环遍历集合数据的重要标签,适用于处理数组、列表、Map等数据结构。下面将详细讲解这个标签的用法及其各种属性。 1. **基本用法** `s:iterator`标签的基础用法是通过`...

    一个使用iterator和json技术的实例

    在Java编程语言中,`Iterator`接口和`Iterable`接口是处理集合数据的重要工具,而JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于数据传输和存储。这个"iterator_jsonDemo"实例结合了这...

    ES6 Iterator接口和for...of循环用法分析

    `for...of`循环则是利用`Iterator`接口来简洁地遍历这些集合的语法糖。 首先,让我们深入理解`Iterator`接口。`Iterator`接口定义了一个迭代过程,返回一个包含`value`和`done`属性的对象。`value`表示当前遍历到的...

    Collection集合基本练习1

    - 增强for循环(foreach):简化遍历集合的代码,例如`for (String str : collection) {...}` 5. **Cat类**: - 定义类Cat,包含私有属性名称、颜色和年龄,以及相应的getter和setter方法。 - 重写`toString()`...

    示例iterator使用及技巧

    `Iterator`是Java集合框架中的一个重要组成部分,它提供了一种遍历集合元素的方法。通过本文的学习,读者将能够更好地理解和掌握`Iterator`的用法。 #### 一、基本概念与使用方法 ##### 1. `Iterator`接口简介 `...

Global site tag (gtag.js) - Google Analytics