首先我们需要迭代器(Iterator)呢?什么是迭代?
对过程的重复,称为迭代。迭代器是遍历Collection(单列)集合的通用方式,可以在对集合遍历的同时进行添加,删除等
操作。
迭代器的常用方法
next():返回迭代器的下一个元素对象
hasNext():如果仍有元素可以迭代,则返回true(简单来说就是判断迭代器中是否有元素)
注意:列表迭代器是List体系独有的遍历方式,可以在对集合遍历的同时进行添加和删除等操作,
但是必须通过调用列表迭代器的方式来实现
使用步骤:
1.根据集合对象获取其对象的迭代器对象
2.判断迭代器中是否有元素
3.如果有就获取元素
总结:普通迭代器在遍历集合的同时不能添加或删除元素,否则会报:并发修改异常
语法: Iterator 变量名 = 集合名.iterator();
并发修改异常:在遍历的同时进行删除或者添加
列表迭代器可以在遍历集合的同时添加或删除元素 :
语法: ListIterator 变量 = 集合名.listIterator();
栗子:
import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class diedaiqi { public static void main(String[] args) { //创建集合对象 List list = new ArrayList(); //添加到集合中 list.add("23"); list.add("24"); list.add("25"); //根据集合对象获取其中对象的迭代器对象 Iterator lis = list.iterator(); while (lis.hasNext()){ //判断迭代器中是否有元素,如果有,则循环 String i = (String)lis.next(); //获取到的值是object对象,转成字符串类型,因为Object是顶级父类,向下转型 System.out.println(i); } } }
栗子二:
需求:判断集合中如果有字符串b,则在其后便添加一个新的字符串"ftsm"
import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.ListIterator; public class diedaiqi { public static void main(String[] args) { //创建集合对象 List list = new ArrayList(); //添加到集合中 list.add("a"); list.add("b"); list.add("c"); //1.根据集合对象获取其对象的列表迭代器对象 ListIterator lit = list.listIterator(); // 列表迭代器 //2判断迭代器中是否有元素 while (lit.hasNext()){ //3.如果有就获取迭代器中的元素 String i = (String)lit.next(); System.out.println(i); //4.判断迭代器中是否有b if("b".equals(i)){ //注意:常量一般在前,变量在后,因为常量在前可以避免空指针异常,(变量为空调用方法就会引空指针异常) // list.add("ftsm"); //这样写不行。会报ConcurrentModificationException异常(并发修改异常)并发修改异常:在遍历的时候同时进行添加或删除 lit.add("ftsm"); } } //打印新的列表集合 System.out.println(list); } }
并发修改异常:在遍历的时候同时进行添加或删除