上一篇已经说过了Iterator迭代器的原理是使用内部类实现的,现在说说
迭代器的取值方式和对元素操作的注意事项:
1.迭代器的取值方式一般有两种:
public class IteratorDemo { public static void main(String[] args) { Collection coll = new ArrayList(); coll.add("abc1"); coll.add("abc2"); coll.add("abc3"); coll.add("abc4"); Iterator it1 = coll.iterator(); // next方法自动往下取元素. // 当取到了不存在的元素。NoSuchElementException //取法一 while (it1.hasNext()) { System.out.println(it1.next()); } System.out.println(it1.hasNext()); //false 但it1还有 Collection coll2 = new ArrayList(); coll2.add("abc1"); coll2.add("abc2"); coll2.add("abc3"); coll2.add("abc4"); //常用的取法二 for (Iterator it = coll2.iterator(); it.hasNext(); ){ System.out.println (it.next()+"----------"); } } }
2.Iterator迭代器在取值时的请注意不要同时使用集合增加,修改元素:
/* 在迭代过程中,如果使用集合对象继续操作元素,有可能发生ConcurrentModificationException。 所以,需要做的是要么使用集合对象操作元素, 要么使用迭代器操作元素。不要同时使用。 在迭代过程中如果需要操作元素,可以使用迭代器的方法。 但是很遗憾,Iterator中只有对元素的判断,获取,删除操作, 这是就需要使用Iterator对象子接口来实现。就是 ListIterator.注意这个列表迭代器只有List集合具备。 ListIterator具备在迭代过程中对元素进行增删改查的动作。 */ public class ListIteratorDemo { public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("abc1"); list.add("abc2"); list.add("abc3"); Iterator<String> it = list.iterator(); ListIterator<String> liIterator = list.listIterator(); /* while(it.hasNext()) { String str = (String)it.next(); System.out.println(str); if(str.equals("abc2")) list.add("abcxxx");//这里使用了迭代器和集合本身同时操作元素的错误,会报异常:ConcurrentModificationException }*/ while(liIterator.hasNext()) { String str = (String)liIterator.next(); System.out.println("取值:"+str); if(str.equals("abc2")){ liIterator.set("xxx"); }else if(str.equals("abc3")){ liIterator.add("yyy"); }else if(str.equals("abc1")){ liIterator.remove(); } } System.out.println("修改后的值:"+list);//[xxx, abc3, yyy] while(liIterator.hasPrevious())//从下往上取值 { System.out.println("修改后的从下往上取值:"+liIterator.previous()); } } }
ListIteratorDemo类中main方法执行后输出的值为:
取值:abc1
取值:abc2
取值:abc3
修改后的值:[xxx, abc3, yyy]
修改后的从下往上取值:yyy
修改后的从下往上取值:abc3
修改后的从下往上取值:xxx
相关推荐
### Iterator迭代器详解 #### 一、Iterator简介与概念 在Java编程语言中,`Iterator`接口是一个重要的组件,它提供了遍历集合的基本方法。`Iterator`的主要作用是在不暴露集合内部结构的情况下,顺序访问集合中的...
该文档是演示迭代器Iterator的使用方法和源代码,其中包括了Iterator的继承类的讲解和再Iterator中的两种方法
C#面向对象设计模式 (行为型模式) Iterator 迭代器模式 视频讲座下载
Java使用Iterator迭代器遍历集合数据的方法小结 Java语言中,使用Iterator迭代器遍历集合数据是一种常见的操作。本文主要介绍了Java使用Iterator迭代器遍历集合数据的方法,并结合实例形式分析了Java迭代器进行集合...
Iterator 迭代器
面向对象方法(STL_analysis)of_Iterator迭代器,这个文档对这进行了详细介绍,供参考!
要使用`Iterator`,首先需要通过调用集合类的`iterator()`方法来获取迭代器实例。例如,对于ArrayList,代码可能如下所示: ```java ArrayList<String> list = new ArrayList(); // 添加元素... Iterator...
常用的集合类Iterator迭代器的使用foreach循环 泛型Collections、Arrays工具
为了高效地遍历和操作这个容器中的元素,STL使用了迭代器(iterator)的概念。迭代器就像一个指针,但具有更高级的功能,能够适应不同的容器和算法。在本主题中,我们将深入探讨如何仿照`std::list`的迭代器进行实现...
计算机后端-Java-Java核心基础-第24章 集合01 11. Iterator迭代器remove()的使用.avi
在`HashMap`中,我们可以通过`entrySet()`、`keySet()`或`values()`方法获取迭代器,分别针对键值对、键或值进行迭代。 1. **使用`entrySet()`迭代**: 这是最常见的迭代方式,因为它允许同时访问键和值。首先,...
Java编程Iterator迭代器设计原理及实现代码示例 Iterator迭代器是Java编程中的一种常见数据结构,用于遍历集合中的元素。在Java中,Iterator迭代器是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素。...
在Java编程语言中,迭代器模式(Iterator Pattern)是一种常用的设计模式,用于顺序访问集合对象中的元素,而无需暴露其底层表示。这种模式提供了一种方法来访问一个聚合对象的元素,而无需暴露该对象的内部结构。在...
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不... 这是第18节:行为型模式Iterator迭代器模式
Java Iterator 迭代器删除集合重复选项 Java 中使用 Iterator 迭代器删除集合重复选项是非常重要的知识点,以下是对该知识点的详细解释。 Iterator 迭代器的介绍 Iterator 迭代器是 Java 中的一种设计模式,用于...
首先,迭代器模式包含两个主要角色:聚合对象(Aggregate)和迭代器(Iterator)。聚合对象持有元素的集合,并提供创建迭代器的方法。迭代器则负责遍历聚合对象中的元素,它有一个或多个方法用于移动到下一个元素,...