ListIterator迭代器
【1】加入字符串
package com.msb.test05; import java.util.ArrayList; import java.util.Iterator; /** * @author : liu * 日期:09:46:45 * 描述:IntelliJ IDEA * 版本:1.0 */ public class Test02 { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("aa"); list.add("bb"); list.add("cc"); list.add("dd"); list.add("ee"); //在"cc"之后添加一个字符串“kk” Iterator<String> it = list.iterator(); while (it.hasNext()){ if ("cc".equals(it.next())){ list.add("kk"); } } } }
发现报错,并发修改异常

出错原因:就是迭代器和list同时对集合进行操作

解决办法:事情让一个“人”做---》引入新的迭代器ListIterator
迭代和添加操作都是靠ListIterator来完成
package com.msb.test05; import java.util.ArrayList; import java.util.Iterator; import java.util.ListIterator; /** * @author : liu * 日期:09:46:45 * 描述:IntelliJ IDEA * 版本:1.0 */ public class Test02 { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("aa"); list.add("bb"); list.add("cc"); list.add("dd"); list.add("ee"); //在"cc"之后添加一个字符串“kk” ListIterator<String> it = list.listIterator(); while (it.hasNext()){ if ("cc".equals(it.next())){ it.add("kk"); } } System.out.println(it.hasNext()); System.out.println(it.hasPrevious()); while (it.hasPrevious()){//逆向迭代 System.out.println(it.previous()); } System.out.println(it.hasNext()); System.out.println(it.hasPrevious()); } }
浙公网安备 33010602011771号