当前位置: 首页 > news >正文

JAVA中的Iterator与ListIterator


Java中的Iterator类是Java集合框架中的一个重要接口,它用于遍历集合中的元素。Iterator提供了三个基本操作:检查是否有下一个元素、获取下一个元素以及移除元素。下面将详细介绍Iterator类及其使用方法,并提供相应的代码例子和中文注释。


一、Iterator接口简介


1. 接口定义
Iterator接口位于java.util包中,定义了以下三个方法:
 

public interface Iterator<E> {boolean hasNext(); // 判断集合中是否还有下一个元素E next();          // 返回集合中的下一个元素default void remove() { // 移除迭代器返回的最后一个元素throw new UnsupportedOperationException("remove");}
}



2. 方法说明

  • (1)hasNext():如果迭代器指向的位置有下一个元素,则返回true,否则返回false。
  • (2)next():返回迭代器指向的下一个元素,并将迭代器指针向后移动一位。
  • (3)remove():移除迭代器返回的最后一个元素。需要注意的是,该方法只能在next()方法之后调用一次。

二、代码例子及中文注释


以下是一个使用Iterator遍历集合的例子:
 

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorExample {public static void main(String[] args) {// 创建一个List集合List<String> list = new ArrayList<>();list.add("苹果");list.add("香蕉");list.add("橙子");list.add("葡萄");// 获取Iterator对象Iterator<String> iterator = list.iterator();// 使用while循环遍历集合while (iterator.hasNext()) {// 获取下一个元素String fruit = iterator.next();// 输出元素System.out.println(fruit);// 判断元素是否为"香蕉",如果是,则移除if ("香蕉".equals(fruit)) {iterator.remove();}}// 输出移除"香蕉"后的集合System.out.println("移除香蕉后的集合:" + list);}
}


运行结果:
 

苹果
香蕉
橙子
葡萄
移除香蕉后的集合:[苹果, 橙子, 葡萄]



在上面的例子中,我们首先创建了一个List集合,并添加了四个元素。然后,通过调用集合的iterator()方法获取一个Iterator对象。接下来,使用while循环和Iterator的hasNext()、next()方法遍历集合中的元素。在遍历过程中,我们通过判断元素是否为"香蕉",如果是,则调用remove()方法将其移除。


三、Iterator与ListIterator的区别

  • 1. ListIterator是Iterator的子接口,只能用于List集合。
  • 2. ListIterator允许在遍历过程中进行双向遍历(向前/向后),而Iterator只能单向遍历(向后)。
  • 3. ListIterator提供了额外的add()方法,可以在遍历过程中向集合中添加元素。

以下是一个使用ListIterator的例子:
 

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class ListIteratorExample {public static void main(String[] args) {// 创建一个List集合List<String> list = new ArrayList<>();list.add("苹果");list.add("香蕉");list.add("橙子");// 获取ListIterator对象ListIterator<String> listIterator = list.listIterator();// 正向遍历集合System.out.println("正向遍历:");while (listIterator.hasNext()) {String fruit = listIterator.next();System.out.println(fruit);}// 反向遍历集合System.out.println("反向遍历:");while (listIterator.hasPrevious()) {String fruit = listIterator.previous();System.out.println(fruit);}// 在遍历过程中添加元素listIterator = list.listIterator();while (listIterator.hasNext()) {String fruit = listIterator.next();if ("香蕉".equals(fruit)) {listIterator.add("葡萄");}}// 输出添加元素后的集合System.out.println("添加葡萄后的集合:" + list);}
}



运行结果:
 

正向遍历:
苹果
香蕉
橙子
反向遍历:
橙子
香蕉
苹果
添加葡萄后的集合:[苹果, 香蕉, 葡萄, 橙子]



在上面的例子中,我们使用ListIterator进行了正向和反向遍历,并在遍历过程中添加了一个新元素"葡萄"。


四、总结
Iterator是Java集合框架中非常重要的一个接口,它为遍历集合提供了统一的方法。通过掌握Iterator的使用,我们可以更加灵活地处理集合中的元素。在实际开发中,应根据具体需求选择合适的迭代器
 

http://www.lryc.cn/news/427008.html

相关文章:

  • 高校疫情防控web系统pf
  • 复现nnUNet2并跑通自定义数据
  • Educational Codeforces Round 169 (Rated for Div. 2)(ABCDE)
  • 成为Python砖家(2): str 最常用的8大方法
  • 深入理解JVM运行时数据区(内存布局 )5大部分 | 异常讨论
  • JAVA根据表名获取Oracle表结构信息
  • 网络性能优化
  • [C++String]接口解读,深拷贝和浅拷贝,string的模拟实现
  • 理性看待、正确理解 AI 中的 Scaling “laws”
  • 【OCR 学习笔记】二值化——全局阈值方法
  • Java - IDEA开发
  • Oracle(62)什么是内存优化表(In-Memory Table)?
  • #window家庭版安装hyper-v#
  • 【云原生】Pass容器研发基础——汇总篇
  • 【Py/Java/C++三种语言详解】LeetCode743、网络延迟时间【单源最短路问题Djikstra算法】
  • 交替输出
  • JS(三)——更改html内数据
  • CSS小玩意儿:文字适配背景
  • C++:平衡二叉搜索树之红黑树
  • CentOS 7 系统优化
  • 扫雷游戏——附源代码
  • Vue3列表(List)
  • HarmonyOS NEXT - Navigation组件封装BaseNavigation
  • 浅看MySQL数据库
  • Pytorch常用训练套路框架(CPU)
  • C++ | Leetcode C++题解之第338题比特位计数
  • 智慧校园云平台电子班牌系统源码,智慧教育一体化云解决方案
  • 数据库系统 第17节 数据仓库 案例赏析
  • 硬件面试经典 100 题(71~90 题)
  • 【git】代理相关