listTierator迭代器

加入字符串

package com.wangg;

import java.util.ArrayList;
import java.util.Iterator;

public class Dome09 {
  public static void main(String[] args) {
      ArrayList<String> strings = new ArrayList<>();
      strings.add("aa");
      strings.add("bb");
      strings.add("cc");
      strings.add("dd");
      strings.add("ee");
      //在cc之后添加一个字符串kk
      Iterator<String> it = strings.iterator();
      while (it.hasNext()){
          if ("cc".equals(it.next())){
              strings.add("kk");
          }
      }
  }
}

发现报错

Exception in thread "main" java.util.ConcurrentModificationException//并发修改异常

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

解决办法:事情让一个“人”做,引入新的迭代器:ListIterator

迭代和修改都让LIstLterator来完成的

package com.wangg;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;

public class Dome09 {
  public static void main(String[] args) {
      ArrayList<String> strings = new ArrayList<>();
      strings.add("aa");
      strings.add("bb");
      strings.add("cc");
      strings.add("dd");
      strings.add("ee");
      //在cc之后添加一个字符串kk
      ListIterator<String> it= strings.listIterator();
      while (it.hasNext()){
          if ("cc".equals(it.next())){
              it.add("kk");
          }
      }
      System.out.println(strings );
  }
}
package com.wangg;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;

public class Dome09 {
  public static void main(String[] args) {
      ArrayList<String> strings = new ArrayList<>();
      strings.add("aa");
      strings.add("bb");
      strings.add("cc");
      strings.add("dd");
      strings.add("ee");
      //在cc之后添加一个字符串kk
      ListIterator<String> it= strings.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());
      System.out.println(strings );
  }
}
posted @ 2021-08-19 11:07  πππ·  阅读(45)  评论(0)    收藏  举报