概述:
1.Iterator是一个迭代器(不是承载数据的工具)
2.本文重点讲述了Iterator删除问题(工作中遇到的问题)
package com.cxy.collection; import java.util.HashSet; import java.util.Iterator; import java.util.Set; /** * @author cxy */ public class IteratorTest { /** * 说明: * 1.Iterator是一个迭代器 * 2.Iterator删除问题(工作中遇到的问题) */ public static void main(String[] args) { Set<String> s = new HashSet<String>(); s.add("苹果"); s.add("香蕉"); s.add("橘子"); //正常使用,带泛型的迭代器 Iterator<String> it = s.iterator(); while(it.hasNext()) { System.out.print(it.next()+" "); } while(it.hasNext()) { System.out.print(it.next()+" "); } //发现第二次访问没有打印任何东西,因为it已经迭代到最后 it.hasNext() 是false System.out.println(""); System.out.println("==================="); //删除问题:工作中经常想用java去处理数据集合,例如:去掉某些不合要求的数据 it = s.iterator(); while(it.hasNext()) { String one = it.next(); //传值非传引用 if("橘子".equals(one)) { it.remove(); //这个删除 是从集合中删除上一次next方法返回的元素 } System.out.print(one+" "); } System.out.println(s); //上面是正规安全的删除,但是很多朋友会很自然的这样去写 it = s.iterator(); s.add("橘子"); //将删除的橘子加回来 while(it.hasNext()) { String one = it.next(); if("橘子".equals(one)) { //这个数据我不要了,我从集合中将其删除 OK 如果你这么做了 你会看到一个ConcurrentModificationException 异常 s.remove(one); } System.out.print(one+" "); } } }
总结:
1.如果你想用java去筛选数据,那么请使用iterator的remove方法
2.foreach虽然简单 但是如果想要安全的删除集合数据还是建议使用iterator
3.多次遍历的时候记得重新获取集合的iterator,it = s.iterator(); 否则第二次遍历将无效。
相关文章连接:
声明:
1.原创文章,转载请标明并加本文连接。
2.更详尽的API请参见 http://docs.oracle.com/javase/7/docs/api/
3.文章反映个人愚见,如有异议欢迎讨论指正
相关推荐
< java.util >Iterator接口 78 < java.util >List接口 78 < java.util >Set接口 80 < java.util >Map接口 81 把map集合转成set的方法 82 使用集合的技巧 83 Collections--集合工具类 83 Arrays—数组对象工具类 84 ...
java中Iterator迭代器讲解,基础数据对象。
java 中 Iterator 与Iterable的作用;java语言需要更多基础沉淀,扎扎实实,后面的各种项目都会如何天翼。进行更高阶的用法和一些框架的原理都离开最基础的东西,基础虽然枯燥,但是也很有乐趣。
《Java 基础核心总结》 Java 概述 什么是 Java2 Java 的特点Java 开发环境 JDK JRE Java 开发环境配置 Java 基本语法 数据类型基础语法运算符 Java 执行控制流程条件语句 if 条件语句 if...else 条件语句if...else ...
大体思想:分页的核心思想采用 Iterator模式,每次从数据库中取定量的数据块 其中block和pageCount是两个不同的概念,block是块,规定了从数据库中获取的数量 pageCount为表现层每页显示的数量 另外参数中还包含缓存...
计算机后端-Java-Java核心基础-第24章 集合01 08. 使用Iterator遍历Collection.avi
计算机后端-Java-Java核心基础-第24章 集合01 09. 迭代器Iterator的执行原理.avi
Iterator接口 139 遍历集合 140 Collections工具类 141 Comparable接口 141 equals和hashcode方法 143 泛型 144 思考作业 145 上机作业 145 第八章 IO技术 146 为什么需要学习IO技术 146 基本概念 146 数据源 146...
计算机后端-Java-Java核心基础-第24章 集合01 11. Iterator迭代器remove()的使用.avi
计算机后端-Java-Java核心基础-第24章 集合01 10. Iterator遍历集合的两种错误写法.avi
Integer x = (Integer) myIntList.iterator().next();// 3 第3 行的类型转换有些烦人。通常情况下,程序员知道一个特定的list 里边放的是什么类型的数据。但是,这个类型转换是必须的(essential)。编 译器只能保证...
Java 集合概述 Collection 接口 Iterator 接口 Set List Map Collections 工具类 Enumeration
java核心知识点整理,...5. JAVA 基础 5.1JAVA 异常分类及处理 5.2JAVA 反射 5.3JAVA 注解 5.4JAVA 内部类 5.5JAVA 泛型 5.6JAVA 序列化(创建可复用的 Java 对象) 5.7JAVA 复制 6. Spring 原理
Java 集合概述 Collection 接口 Iterator 接口 Set List Map Collections 工具类 Enumeration
Java集合详解3:Iterator,fail-fast机制与比较器 Java集合详解4:HashMap和HashTable Java集合详解5:深入理解LinkedHashMap和LRU缓存 Java集合详解6:TreeMap和红黑树 Java集合详解7:HashSet,TreeSet与...
这个是利用iterator迭代器来对hashMap进行迭代元素,数据java基础的内容。有兴趣的朋友可以看看。
教学目标: i掌握集合框架的基本概念 i掌握Collection接口 i掌握Iterator接口 i掌握Set接口 i掌握List接口 i掌握Map接口 i了解集合的排序
010301_【第3章:Java基础程序设计】_Java数据类型笔记.pdf 010302_【第3章:Java基础程序设计】_运算符、表达式与语句笔记.pdf 010303_【第3章:Java基础程序设计】_判断与循环语句笔记.pdf 010401_【第4章:数组与...
Java程序基础 Java程序基本结构 变量和数据类型 整数运算 浮点数运算 布尔运算 字符和字符串 数组类型 流程控制 输入和输出 if判断 switch多重选择 while循环 do while循环 for循环 break和continue ...
示例iterator使用及技巧,有详细例子!先由基础到应用技巧