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

零基础学Java第二十二天之迭代器 Iterator

迭代器 Iterator 的理解和相关集合 使用

1、理解

迭代器(Iterator)是设计模式中的一种,它允许程序员遍历容器(例如列表、集合等)中的元素,而无需了解容器底层的实现细节。在编程中,迭代器提供了一种方法来访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。

2、特点

  1. 顺序访问:迭代器通常按照某种顺序(如插入顺序或排序顺序)访问容器中的元素。
  2. 一次访问一个元素:迭代器在给定时刻只指向容器中的一个元素。
  3. 状态保存:迭代器保存了遍历容器时的状态,使得在迭代过程中可以记住当前的位置。
  4. 不修改容器:迭代器通常不修改容器本身,只用于访问元素。

3、使用

1、foreach迭代器(增强for循环)

package com.xx.iterator01;import java.util.ArrayList;public class Test01 {/***深入迭代器 -- foreach*/public static void main(String[] args) {// 创建一个ArrayList集合并添加一些元素ArrayList<String> list = new ArrayList<>();//往集合里面添加元素list.add("aaa");list.add("bbb");list.add("ccc");list.add("ddd");list.add("eee");//foreach循环// 它声明了一个变量element(类型为String),该变量将在每次迭代中存储list中的下一个元素。list是外部定义的,并假定为包含String元素的某种集合(最常见的是List<String>)。for (String element : list) {System.out.println(element);}/*** 使用foreach循环遍历集合的底层实现:Iterator<String> it = list.iterator(); // 获取迭代器  String element;  //当他有下一个元素时while (it.hasNext()) { // 使用while循环模拟for-each循环  element = it.next(); // 获取下一个元素  System.out.println(element); // 打印元素  }*/}
}

2、Iterator遍历元素

package com.xx.iterator01;import java.util.ArrayList;
import java.util.Iterator;public class Test02 {/*** 深入迭代器 -- Iterator* * 深入:Iterator如何遍历元素*/public static void main(String[] args) {// 创建一个ArrayList集合并添加一些元素ArrayList<String> list = new ArrayList<>();//添加元素list.add("aaa");list.add("bbb");list.add("ccc");list.add("ddd");list.add("eee");//移除元素list.remove("bbb");//获取迭代器Iterator<String> it = list.iterator();//当有下一个元素时,继续循环打印while(it.hasNext()){String element = it.next();System.out.println(element);}}
}

3、使用Iterator遍历元素,遍历到"bbb"时删除该元素

package com.xx.iterator01;import java.util.ArrayList;
import java.util.Iterator;public class Test02 {/*** 知识点:深入迭代器 -- Iterator* * 深入:Iterator如何遍历元素*/public static void main(String[] args) {// 创建一个ArrayList集合并添加一些元素ArrayList<String> list = new ArrayList<>();//添加元素list.add("aaa");list.add("bbb");list.add("ccc");list.add("ddd");list.add("eee");//移除元素list.remove("bbb");//获取迭代器Iterator<String> it = list.iterator();//当有下一个元素时,继续循环打印while(it.hasNext()){ String element = it.next();//如果元素等于bbb,则删除if(element.equals("bbb")){//list.remove(element);/it.remove();}//开始遍历for (String element : list) {System.out.println(element);}}}
}

4、使用ListIterator遍历元素

package com.xx.iterator01;import java.util.ArrayList;
import java.util.ListIterator;public class Test04 {/*** 深入迭代器 -- ListIterator* * 需求:使用ListIterator遍历元素*/public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("aaa");list.add("bbb");list.add("ccc");list.add("ddd");list.add("eee");ListIterator<String> listIterator = list.listIterator();while(listIterator.hasNext()){String element = listIterator.next();System.out.println(element);}}
}

5、使用ListIterator遍历元素,遍历到"bbb"时删除

package com.xx.iterator01;import java.util.ArrayList;
import java.util.ListIterator;public class Test05 {/*** 深入迭代器 -- ListIterator* * 需求:使用ListIterator遍历元素,遍历到"bbb"时删除*/public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("aaa");list.add("bbb");list.add("ccc");list.add("ddd");list.add("eee");ListIterator<String> listIterator = list.listIterator();//当下一个位置有元素时,继续循环while(listIterator.hasNext()){//将下一个位置的元素,赋值给elelmentString element = listIterator.next();//如果元素输入为bbb,删除bbbif(element.equals("bbb")){listIterator.remove();}}//开始遍历集合for (String element : list) {System.out.println(element);}}
}

6、使用ListIterator遍历元素,遍历到"bbb"时添加"xyz"

package com.xx.iterator01;import java.util.ArrayList;
import java.util.ListIterator;public class Test06 {/*** 深入迭代器 -- ListIterator* * 需求:使用ListIterator遍历元素,遍历到"bbb"时添加"xyz"*/public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("aaa");list.add("bbb");list.add("ccc");list.add("ddd");list.add("eee");ListIterator<String> listIterator = list.listIterator();while(listIterator.hasNext()){String element = listIterator.next();//当元素为bbb时,添加xyzif(element.equals("bbb")){listIterator.add("xyz");}}//遍历集合for (String element : list) {System.out.println(element);}}
}

7、使用ListIterator遍历元素,遍历到"bbb"时替换成"xyz"

package com.xx.iterator01;import java.util.ArrayList;
import java.util.ListIterator;public class Test07 {/*** 深入迭代器 -- ListIterator* * 需求:使用ListIterator遍历元素,遍历到"bbb"时替换成"xyz"*/public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("aaa");list.add("bbb");list.add("ccc");list.add("ddd");list.add("eee");ListIterator<String> listIterator = list.listIterator();while(listIterator.hasNext()){String element = listIterator.next();//当元素为bbb时,设置bbb替换成xyzif(element.equals("bbb")){listIterator.set("xyz");}}//遍历集合for (String element : list) {System.out.println(element);}}
}

8、使用ListIterator指定下标遍历元素

package com.xx.iterator01;import java.util.ArrayList;
import java.util.ListIterator;public class Test08 {/*** 深入迭代器 -- ListIterator* * 需求:使用ListIterator指定下标遍历元素*/public static void main(String[] args) {//新建一个集合ArrayList<String> list = new ArrayList<>();//添加元素list.add("aaa");list.add("bbb");list.add("ccc");list.add("ddd");list.add("eee");//获取迭代器,从下标为1的开始ListIterator<String> listIterator = list.listIterator(1);while(listIterator.hasNext()){String element = listIterator.next();System.out.println(element);}}
}

9、使用ListIterator倒序遍历元素

package com.qf.iterator01;import java.util.ArrayList;
import java.util.ListIterator;public class Test09 {/*** 深入迭代器 -- ListIterator* * 需求:使用ListIterator倒序遍历元素*/public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("aaa");list.add("bbb");list.add("ccc");list.add("ddd");list.add("eee");//获取一个迭代器,从集合末尾开始ListIterator<String> listIterator = list.listIterator(list.size());//当迭代器中,前一个位置有元素时,继续循环while(listIterator.hasPrevious()){//将前一个元素赋值给elementString element = listIterator.previous();System.out.println(element);}}
}
http://www.lryc.cn/news/352082.html

相关文章:

  • 微服务架构-异步消息传递设计模式
  • 基于SSM的大学生兼职管理系统
  • leetcode刷题记录:前缀和
  • TENT: FULLY TEST-TIME ADAPTATION BY ENTROPY MINIMIZATION--论文笔记
  • Java期末复习指南(1):知识点总结+思维导图,考试速成!
  • OpenMV学习笔记1——IDE安装与起步
  • C++设计模式|结构型 适配器模式
  • 视频码流分析工具
  • 记一次重定向问题(浏览器安全)解决
  • 【传知代码】transformer-论文复现
  • 大模型日报|今日必读的 13 篇大模型论文
  • Python 魂斗罗的音效和动漫效果
  • Raylib 绘制自定义字体的一种套路
  • C++学习笔记(21)——继承
  • DOS学习-目录与文件应用操作经典案例-more
  • android 在 Activity 的 onCreate 中获取View 的宽高
  • Pod进阶——资源限制以及探针检查
  • XSS---DOM破坏
  • 2024电工杯数学建模B 题:大学生平衡膳食食谱的优化设计
  • LeetCode 1542.找出最长的超赞子字符串:前缀异或和(位运算)
  • LLM企业应用落地场景中的问题概览
  • 基于灰狼优化算法优化支持向量机(GWO-SVM)时序预测
  • C++中获取int最大与最小值
  • 学习通高分免费刷课实操教程
  • 缓存降级
  • PyQt6--Python桌面开发(32.QMenuBar菜单栏控件)
  • golang创建式设计模式---工厂模式
  • 高精度定位平板主要应用在哪些领域
  • conda使用常用命令
  • 22-LINUX--多线程and多进程TCP连接