1. 程式人生 > 其它 >通過迭代器對list集合中的元素進行增刪改操作

通過迭代器對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()); //獲取元素並將指標向前移動
        }*/
    }

}