-
2021-12-22 20:17:43
一.迭代器作用:
通用的取出集合中元素的方法(对集合进行遍历)
二.迭代器概念:
-
迭代: 即collection集合元素的通用获取方式,在取出元素之前先要判断集合中是否有没有元素,如果有,就把这个元素取出来,接下来继续判断,如果还有,就继续取出来,直到把集合中所有元素全部取出
这种取出方式专业术语称为迭代
-
使用java.util.Iterator接口对集合进行遍历
三.迭代器的定义:
提供一种方法访问一个容器(container)对象中各个元素,而又不需要暴露该对象的内部细节
迭代器模式,就是为了容器而生
-
Collection接口继承了java.lang.Interable接口,该接口有一个interator()方法,那么实现Collection接口的类都有interator()方法,用以返回一个实现了Interator接口的对象
-
Interator仅用于集合的遍历,本身并不提供继承对象的能力,如果需要创建Interator对象,则必须有一个被迭代的集合
-
集合对象每次调用interator()方法都得到一个全新的迭代器对象,默认游标都在集合的第一个元素之前
四.常用方法:
-
boolean hasNext();
//判断集合中是否还有下一个元素,如果仍有元素可以迭代,则返回true;没有则返回false
-
E next();
//返回迭代的下一个元素
Iterator迭代器,是一个接口,我们无法直接使用,需要使用Iterator接口的实现类对象,获取实现类的方式比较特殊 Collection中接口中有一个iterator()方法,这个方法返回的就是迭代器实现类的对象
-
default remove();
//移除操作,不同于集合直接调用remove()
五.使用迭代器遍历集合示例:
import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class IteratorTest { public static void main(String[] args) { Collection c = new ArrayList(); c.add(123); c.add(666); c.add("Tom"); c.add(false); Iterator iterator = c.iterator(); //创建迭代器对象 while (iterator.hasNext()){ //判断集合中是否还有下一个元素 Object obj = iterator.next(); //如果有下一个元素,则将它传给obj if ("Tom".equals(obj)){ //判断集合中是否有"Tom"这个元素 iterator.remove(); //如果有"Tom",则调用删除方法将它删除 } } iterator = c.iterator(); //再遍历一次集合,并输出新的集合 while (iterator.hasNext()){ System.out.println(iterator.next()); } } }
更多相关内容 -
-
【java迭代器Iterator】获取单个元素,循环遍历和删除
2022-07-11 13:32:49Iterator 是 Java 迭代器,获取迭代器,遍历集合,删除,获取单个元素java迭代器Iterator
什么是Iterator
public interface Iterator 由此可见它是一个接口
Iterator 是 Java 迭代器最简单的实现,它是一种用于访问集合的方法,可用于迭代 ArrayList 和 HashSet 等集合。怎么获取Iterator对象
Iterator是一个接口,没有构造方法,那我们如何创建它的对象呢?
我们可以通过它的实现类来创建对象
public interface Collection extends Iterable Collection是一个接口它继承了Iterable接口,所以它会重写Iterable里面的方法,而Collection也是一个接口,我们要创建它的对象,应该去找它的实现类,比如ArrayList//获取集合对象 Collection c = new ArrayList(); //添加元素 c.add("123"); c.add(123); c.add('c'); System.out.println(c); //iterator iterator()获取迭代器 Iterator it = c.iterator();
Iterator三个常用方法
E next() 获取单个元素
返回迭代中的下一个元素。
boolean hasNext() 可用于循环遍历
如果next()返回一个元素而不是抛出一个异常,则返回true
换言之,调用hasNext() 用于检测集合中是否还有元素。
default void remove()
从底层集合中删除此迭代器返回的最后一个元素(可选操作)。 此方法只能调用一次next() 。 如果底层集合在迭代过程中以任何方式进行修改而不是通过调用此方法,则迭代器的行为是未指定的。
换言之,调用 remove() 将迭代器返回的元素删除。
-
java集合迭代器Iterator中的remove陷阱
2020-09-02 10:41:42主要介绍了java集合迭代器Iterator中的remove陷阱,需要的朋友可以参考下 -
Java迭代器iterator遍历有条件删除对象
2021-08-18 18:00:28Java迭代器iterator遍历有条件删除对象 在使用迭代器遍历对象并对对象使用删除操作时可能发生的问题指南 文章目录Java迭代器iterator遍历有条件删除对象前言总结 前言 前不久在使用Java迭代器 iterator 对象遍历...Java迭代器iterator遍历有条件删除对象
在使用迭代器遍历对象并对对象使用删除操作时可能发生的问题指南
前言
前不久在使用Java迭代器 iterator 对象遍历执行 list 对象操作,当我根据条件删除 list 内的元素时,再次运行到 iterator.next() 时就会出错,想要在循环遍历的过程中删除集合中的元素,但是运行代码的时候遇到了这么一个错: java.util.ConcurrentModificationException: null代码如下:
Iterator<String> it = taskIdList.iterator(); while (it.hasNext()) { String string = it.next(); if(string.shouldRemove()){ taskIdList.remove(string); } }
其实这样写是不正确的,当我们迭代一个ArrayList或者HashMap时,如果尝试对集合做一些修改操作(例如删除元素),可能会抛出java.util.ConcurrentModificationException的异常,因为原迭代集合和迭代对象已经不一样了,当再次运行到 iterator.next() 就会报错。正确写法应该如下:
Iterator<String> it = taskIdList.iterator(); while (it.hasNext()) { String string = it.next(); if(string.shouldRemove()){ it.remove(); } }
这才是保证效率和安全性的正确写法。
总结
参考资料
1. java中迭代器Iterator,遍历集合删除集合中满足条件的元素 https://blog.csdn.net/qq_41135254/article/details/107163989
2. 解决:java.util.ConcurrentModificationException: null:异常 https://blog.csdn.net/qq_43599835/article/details/90602742 -
Java迭代器Iterator的三种常用方法
2020-12-27 21:12:32文章目录一、Iterator是什么?二、使用步骤1.常用方法2.next()使用3.循环集合元素hasNext()4. remove() 一、Iterator是什么?...E next() 会返回迭代器的下一个元素,并且更新迭代器的状态。 boolean h
一、Iterator是什么?
Iterator不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList 和 HashSet 等集合。
Iterator 属于迭代输出,基本的操作原理:是不断的判断是否有下一个元素,有的话,则直接输出。
二、使用步骤
1.常用方法
E next() 会返回迭代器的下一个元素,并且更新迭代器的状态。 boolean hasNext() 用于检测集合中是否还有元素。存在则返回true。 default void remove() 将迭代器返回的元素删除。
2.next()使用
next() 会返回迭代器的下一个元素,并且更新迭代器的状态。
import java.util.Iterator; // 引入 Iterator 类 import java.util.ArrayList; public class Demo { public static void main(String[] args) { // 创建集合 ArrayList<String> data = new ArrayList<>(); // 为集合添加元素 data.add("Google"); data.add("IDEA"); data.add("Baidu"); // 获取迭代器 Iterator<String> iterator = data.iterator(); // 输出集合中第一个元素 System.out.println(iterator.next()); // 输出集合中第二个元素 System.out.println(iterator.next()); } }
执行以上代码,结果输出为:
Google IDEA
3.循环集合元素hasNext()
hasNext() 用于检测集合中是否还有元素。存在则返回true。
让迭代器逐个返回集合中所有元素最简单的方法是使用 while 循环:
import java.util.ArrayList; import java.util.Iterator; public class Demo { public static void main(String[] args) { // 创建集合 ArrayList<String> data = new ArrayList<>(); data.add("Google"); data.add("IDEA"); data.add("Baidu"); // 获取迭代器 Iterator<String> iterator = data.iterator(); // hasNext 检查集合中是否还有元素,如果有则进入循环。 while (iterator.hasNext()){ // 循环打印集合中的 元素 System.out.println(iterator.next()); } } }
执行以上代码,输出结果如下:
Google IDEA Baidu
4. remove()
remove() 将迭代器返回的元素删除。
import java.util.ArrayList; import java.util.Iterator; public class Demo { public static void main(String[] args) { // 创建集合 ArrayList<String> data = new ArrayList<>(); data.add("Google"); data.add("IDEA"); data.add("Baidu"); // 获取迭代器 Iterator<String> iterator = data.iterator(); iterator.next(); // 使用remove时,迭代器的指针不能为初始位置,否则会报错 iterator.remove(); // 输出集合中第一个元素 System.out.println(iterator.next()); // 输出集合中第二个元素 System.out.println(iterator.next()); } }
执行以上代码,输出结果如下:
IDEA Baidu
可以看到,原本集合中的第一个元素Google被干掉了。
-
java 迭代器Iterator
2020-03-02 10:31:06迭代器Iterator 作用: 概念: 迭代器的 常用方法: 迭代器的 使用步骤: 注意事项: 使用详解: 迭代器的 实现原理: 迭代器Iterator 作用: 通用的取出集合中元素的方法。 概念: 迭代器的常用... -
Java 迭代器Iterator的详解
2016-07-26 21:13:30该对象就叫做迭代器(Iterator). 对 Collection 进行迭代的类,称其为迭代器。还是面向对象的思想,专业对象做专业的事情,迭代器就是专门取出集合元素的对象。但是该对象比较特殊,不能直接创建对象(通过new),该... -
Java集合框架迭代器Iterator实现原理解析
2020-08-18 16:55:42主要介绍了Java集合框架迭代器Iterator实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 -
Java迭代器Iterator原理和使用总结
2017-06-11 10:37:26 -
Java迭代器Iterator代码详解(迭代器模式)
2020-09-26 11:09:51你好我是辰兮,很高兴你能来阅读,本篇给你介绍Java设计模式之迭代器模式,简单的讲解Iterator具体如何使用,分享给初学者,大家一起进步! 文章目录一、迭代器介绍二、ArrayList案例三、HashMap案例四、拓展相关 ... -
Java面试题之迭代器Iterator是什么?
2022-03-26 15:33:00面试过程中,经常会有人问,请说一下介绍一下迭代器Iterator。那么今天我们就来进行学习一下。首先思考这样一个问题,如果原本对着List编码的,但是后来发现如果能够把同样的代码应用于Set,将会更加方便,此时应该... -
Java如何使用Iterator迭代器删除集合重复选项
2020-08-25 02:23:04主要介绍了Java如何使用Iterator迭代器删除集合重复选项,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 -
java常见小错误(二):Java迭代器iterator和for循环的区别
2021-05-18 15:43:37java常见小错误(二):Java迭代器iterator和for循环的区别 java常见错误系列文章 下一篇:java常见小错误(一):变量类型自动转换与强制转换 往期文章推荐: java小技巧(三):JAVA 交集,差集,并集 ... -
Java迭代器Iterator令人迷惑的方法名 hasNext(),next()解析
2022-03-15 14:24:38Java迭代器Iterator令人迷惑的方法名 hasNext(),next()解析推荐,文章很清晰,再也不会迷惑啦:https://blog.csdn.net/weixin_44062380/article/details/107179698点击查看 -
Java中的迭代器Iterator接口详解
2022-03-19 20:47:37Java中的迭代器Iterator接口详解---->解析加代码,简单易懂,快速上手 -
Java 迭代器 iterator 和 for 循环的区别
2022-02-15 11:06:43Java 提供一个专门的迭代器 «interface»Iterator,可以对某个序列实现该接口,来提供标准的 Java 迭代器。实现 Iterator 后的功能是“使用”一个迭代器。文档定义: Package java.util; public interface Iterator... -
Java的迭代器—— Iterator
2022-03-30 16:10:00Java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList 和 HashSet 等集合。 创建方式 创建一个集合如 ArrayList 或HashSet,ArrayList<String> sites = new ArrayList<... -
Java中的Iterator迭代器详解
2022-04-18 12:49:50Iterator接口也是Java集合中的一员,但它与Collection、Map接口有所不同,Collection接口与Map接口主要用于存储元素,而Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象也被称为迭代器。... -
【JAVASE小新】迭代器iterator遍历集合
2022-02-26 18:00:58package Gather.CollectionArrayList; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator;... * 1、Iterator对象被称为迭代器,主要用于遍历Collection的元素 * 2. -
Java使用Iterator迭代器遍历集合数据的方法小结
2020-08-25 09:25:30主要介绍了Java使用Iterator迭代器遍历集合数据的方法,结合实例形式分析了java迭代器进行集合数据遍历的常见操作技巧,需要的朋友可以参考下 -
Java中迭代器Iterator的remove()方法使用的注意事项
2022-02-26 16:26:30不可以使用集合的方法来增删元素,这里使用的list.remove()就是集合的方法,会破坏迭代器的结构从而抛出ConcurrentModificationException异常,应该使用迭代器的remove()方法来删除next()获取的元素,即iterator.... -
Java Iterator接口遍历单列集合迭代器原理详解
2020-08-25 06:43:02主要介绍了Java Iterator接口遍历单列集合迭代器原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 -
Java迭代器(Iterator)注意事项
2022-04-13 20:34:04Java迭代器(Iterator)注意事项 **Iterator访问元素的顺序取决于集合类型。**如果迭代处理一个ArrayList,迭代器索引将从0开始,每迭代一次,索引值加1。不过如果访问的是HashSet中的元素,会按照一种基本上随机... -
Java基础学习03--迭代器iterator
2022-03-19 19:28:26一、什么是迭代器 Iterator 为遍历集合而生,是 Java 语言解决集合遍历的一个工具。iterator()方法定义在 Collection 接口中,因此所有单值集合的实现类,都可以通过 iterator()实现遍历。iterator()的返回值是 ... -
Java迭代器(Iterator)的用法
2022-02-28 16:06:21Java迭代器(Iterator)的用法什么是IteratorIterator的应用 什么是Iterator Iterator(迭代器),它是一种用于访问集合的方法,可用于迭代 ArrayList 和 HashSet 等集合(或者也可以说成,遍历并选择序列中的对象)。 ... -
Java迭代器Iterator
2016-01-29 11:20:19迭代器:迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象 Java中的Iterator功能比较简单,并且只能单向移动: (1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的... -
Java--迭代器(Iterator)迭代原理
2021-10-23 15:53:55Java中迭代器(Iterator)是一个接口,通过构造方法iterator()可以获取迭代器 public interface Iterable<T> { /** * Returns an iterator over elements of type {@code T}. * * @return an Iterator. ... -
Java迭代器Iterator的底层
2019-04-09 16:48:03import java.util.Iterator; /** * * @author DELL * */ public class MyArrayList3 implements java.lang.Iterable<String>{ String[] elem = {"a","b","c","d","e","f","g"}; int size = ele... -
Java——迭代器iterator详解
2018-12-18 15:41:07一、Iterator的API 关于Iterator主要有三个方法:hasNext()、next()、remove() hasNext:没有指针下移操作,只是判断是否存在下一个元素 next:指针下移,返回该指针所指向的元素 remove:删除当前指针所...