概述:
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.文章反映个人愚见,如有异议欢迎讨论指正
相关推荐
总之,Iterator作为Java中处理集合数据的核心工具之一,掌握其基本用法和进阶特性,对于提高代码质量和编程效率具有不可忽视的作用。无论是基础的遍历操作,还是高级的双向迭代和元素操作,Iterator都提供了强大的...
`Collection`接口是Java集合框架的基础,它定义了集合类应该具有的基本行为。此接口中的方法包括但不限于`add()`、`addAll()`、`remove()`、`removeAll()`等。其中,`add(Object c)`方法尤为关键,用于向集合中添加...
### Java基础之集合详解 #### 一、集合简介 ##### 1.1 集合定义 集合在Java中是一种容器,它可以存储任意数量的具有共同属性的对象。这些对象可以是不同类型的数据,如整数、字符串等。 ##### 1.2 集合作用 - **...
### Java基础入门核心知识点概览 #### 1. Java简介与安装 - **Java概述**:介绍Java的历史背景和发展趋势,以及Java的特点,如平台无关性、面向对象特性等。 - **JDK/JRE/JVM的区别**:解释Java Development Kit...
根据提供的文件信息,“Java基础教学视频详解”主要面向Java初学者,旨在通过详细的讲解帮助学习者掌握Java基础知识。下面将围绕这一主题展开更深入的知识点介绍。 ### Java基础概述 Java是一种广泛使用的、面向...
在这个Java基础实战项目中,Bank项目的目标是使用集合来替换原有的数组实现,以更好地管理和表示银行与客户,以及客户与其账户之间的关系。这里主要涉及了Java集合框架中的ArrayList,以及对象属性和方法的修改。 ...
Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司)于1995年发布。Java的设计目标是具有高度的可移植性、安全性以及健壮性...记得理论与实践相结合,不断练习,才能真正掌握Java基础核心。
java 中 Iterator 与Iterable的作用;java语言需要更多基础沉淀,扎扎实实,后面的各种项目都会如何天翼。进行更高阶的用法和一些框架的原理都离开最基础的东西,基础虽然枯燥,但是也很有乐趣。
### Java基础知识点详解 #### 一、Java集合类框架 Java集合类框架是Java编程语言中用于处理数据的重要工具之一,主要包括以下基本接口: 1. **`Collection`**:这是集合类框架的基础接口,它代表了一个对象的集合...
《Java 基础核心总结》 Java 概述 什么是 Java2 Java 的特点Java 开发环境 JDK JRE Java 开发环境配置 Java 基本语法 数据类型基础语法运算符 Java 执行控制流程条件语句 if 条件语句 if...else 条件语句if...else ...
Java基础 * Java的基本数据类型包括整型、浮点型、字符型、布尔型、数组等。 * Java的变量可以通过关键字`final`、`static`、`abstract`等来修饰。 * Java的运算符包括算术运算符、比较运算符、逻辑运算符、赋值...
本压缩包包含了一系列关于Java基础语法的源代码示例,旨在帮助初学者深入理解和掌握Java编程的核心概念。以下将针对每个章节的可能内容进行详细阐述: 1. **Chapter 1:基础语法** - 变量声明与初始化:包括基本...
大体思想:分页的核心思想采用 Iterator模式,每次从数据库中取定量的数据块 其中block和pageCount是两个不同的概念,block是块,规定了从数据库中获取的数量 pageCount为表现层每页显示的数量 另外参数中还包含缓存...
根据提供的文件信息,“动力节点Java基础301集”是一套非常全面的Java基础教程,旨在为初学者和有一定基础的学习者提供系统化的学习资源。接下来,我们将从以下几个方面对这套教程涉及的重要知识点进行总结: ### ...
根据提供的文件标题、描述、标签以及部分内容链接,我们可以总结出一系列与Java基础知识相关的知识点。由于实际视频内容无法直接查看,以下内容将基于标题和描述中提及的信息进行展开,旨在为初学者提供一个全面且...
这份“Java基础教程”PPT是由东方标准提供的,对于初学者来说是一份很好的学习资源。 教程可能涵盖以下内容: 1. **Java简介**:讲解Java的历史、特点、应用领域以及与C++等其他语言的区别。 2. **Java环境搭建**...
Java基础面试题目主要涵盖了许多核心概念,包括语言特性、数据结构、并发处理、异常处理、类与对象的关系、以及Web开发相关的技术。以下是对这些知识点的详细解释: 1. **公共(public)、受保护(protected)、...
在Java编程语言中,Iterator模式是一种设计模式,用于在各种数据结构(如集合)中进行迭代操作,使得用户可以顺序地访问集合中的元素,而无需了解底层数据结构的细节。这个模式有效地解耦了集合对象和遍历行为,提供...
Java作为一门广泛使用的编程语言,其基础知识在面试中占据着重要...以上只是Java基础知识的一部分,实际面试中还可能涉及更多细节和实战经验。通过深入学习和实践这些知识点,能够为Java开发者在面试中提供坚实的基础。