List的遍历和删除元素

package test;

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

public class ListExercise {
    public static void main(String[] args){
        List<String> list=new ArrayList<String>();
        list.add("111");
        list.add("222");
        list.add("333");
        list.add("444");
        
        //1.for循环
        //    1.1索引值 i 递增
        //  优点:可以获取索引值。
        System.out.println("========1.for循环:1.1 索引值  i 递增======");
        for(int i=0;i<list.size();i++)
        {
            System.out.println(list.get(i));
        }
        
        //  1.2索引值 i 递减
        //  优点:可以获取索引值,可以删除数据。
        System.out.println("=======1.for循环:1.2 索引值 i 递减======");
        for(int i=list.size()-1;i>=0;i--)
        {
            System.out.println(list.get(i));
            if("444".equals(list.get(i)))
            {
                list.remove(i);
            }
        }
        //2. 增强for循环
        //  缺点:不能获取索引值,也不能删除数据
        System.out.println("=======2.增强for循环======");
        for(String str:list)
        {
            System.out.println(str);
        }
        
        //3.迭代器(原理:生成一个链表,链表的一个节点保存信息,节点的数据部分保存list的元素地址)
        //   优点:可以删除元素。
        //   缺点:不能获取索引值。
        System.out.println("=======3.迭代器======");
        Iterator<String> itr=list.iterator();
        while(itr.hasNext())
        {
            String str=itr.next();
            System.out.println(str);
            if("222".equals(str))
            {
                itr.remove();
            }
        }
        
        System.out.println("==========打印list最后剩下的元素==========");
        Iterator<String> itr2 =list.iterator();
        for(;itr2.hasNext();)
        {
            System.out.println(itr2.next());
        }
        
        
    }
}

运行结果:

========1.for循环:1.1 索引值 i 递增======
111
222
333
444
=======1.for循环:1.2 索引值 i 递减======
444
333
222
111
=======2.增强for循环======
111
222
333
=======3.迭代器======
111
222
333
==========打印list最后剩下的元素==========
111
333

原文地址:https://www.cnblogs.com/gengaixue/p/5190310.html