通过迭代器对list集合中的元素进行增删改操作

package com.liftsail.qiniurefererdemo.test;

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

/**
 * @Author: liftsail
 * @Date: 2022/12/8 11:44
 * @Description: 不积跬步无以至千里
 */
public class ListTest {

    @SuppressWarnings({"rawtypes", "unchecked"})
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add("a");//Object obj = new String();
        list.add("b");
        list.add("world");
        list.add("c");
        list.add("d");
        list.add("e");

        //1.并发错误
        /*Iterator it = list.iterator();    //获取迭代器
        while (it.hasNext()) {            //判断集合中是否有元素
            String str = (String) it.next();    //向下转型
            if ("world".equals(str)) {
                list.add("java");
                //遍历的同时在增加元素,并发修改ConcurrentModificationException
            }
        }
        list.forEach(a -> System.out.println(a));
        */

        //2.如果想在遍历的过程中添加元素,可以用ListIterator中的add方法
        ListIterator listIterator = list.listIterator();//获取迭代器(List集合特有的)
        while (listIterator.hasNext()) {
            String str = (String) listIterator.next();            //向下转型
            if ("world".equals(str)) {
                listIterator.remove();
                listIterator.add("java-666");
            }
        }
        System.out.println(listIterator);
        list.forEach(a -> System.out.println(a));

        //3.迭代器的指针
        /*ListIterator li = list.listIterator();//获取迭代器
        while (li.hasNext()) {
            System.out.println(li.next());//获取元素并将指针向后移动
        }
        System.out.println("-----------------");
        while (li.hasPrevious()) {
            System.out.println(li.previous()); //获取元素并将指针向前移动
        }*/
    }

}

 

posted @ 2022-12-08 13:27  liftsail  阅读(442)  评论(0编辑  收藏  举报