三种方式遍历List集合

集合模块之遍历List集合

三种方式遍历List集合

方式一:使用基本的for循环遍历List集合

 /*
        * 使用三种不同的循环遍历List<Student>
        * 1.传统的for循环
        * 2,迭代器Iterator
        * 3,增强for循环 底层基于迭代器迭代器Iterator
        * */
        List<Student> students = new ArrayList<>();
        students.add(new Student("ll",22));
        students.add(new Student("ll2",221));
        students.add(new Student("ll3",222));
        ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("llllll");
        System.out.println("自己测试");
        for(Student a :students){
            arrayList.set(0,a.getName());
            System.out.println(arrayList);
        }
        //方式一:遍历集合
        System.out.println("用最原始的for循环循环集合");
        for(int i=0;i<students.size();i++){
            Student student=students.get(i);
            System.out.println(student.getName()+","+student.getAge());
        }

优缺点分析:

优点:效率最高,遍历快,可以根据自定计数器操作元素
缺点:不适用所有集合,试用范围小

使用场合:

顺序存储:读取性能比较高,适用于遍历顺序存储集合。
链式集合:时间复杂度太大,不适用于遍历链式存储的集合

方式二:迭代器对遍历List集合

Iterator是Java集合框架的成员,主要用于遍历(即迭代访问)Collection集合中的元素,也成为迭代器。
提供三种方法:
boolean hasNext():返回集合里的下一个元素
Object next():返回集合里下一个元素。
void remove():删除集合里上一次next方法返回的元素

//方式二:迭代器
        System.out.println("迭代器遍历");
        Iterator<Student> iterator =students.iterator();
        while (iterator.hasNext()){
            Student student=iterator.next();
            System.out.println(student.getName()+","+student.getAge());
        }

优缺点分析:
优点:迭代器提供了操作元素的方法,可以在遍历中相应地操作元素。
缺点:运行复杂,性能稍差,效率下个对其他两种遍历方式较低。

使用场合:

顺序存储:如果不是太在意时间,推荐选择此方式,毕竟代码更加简洁,也防止了Off-By-One的问题

链式存储:意义就重大了,平均时间复杂度降为O(n),还是挺诱人的,所以推荐此种遍历方式。

方式三:增强for循环遍历List集合

//方式三:增强for循环进行遍历集合
        System.out.println("for each增强循环遍历");
        for(Student stu:students){
            System.out.println(stu.getName()+","+stu.getAge());
        }

优缺点分析:
优点:代码简洁,不易出错。
缺点:只能做简单的遍历,不能在遍历过程中操作(删除,替换)数据集合。

使用场合:

foreach只是让代码更加简洁了,但是他有一些缺点,就是遍历过程中不能操作数据集合(删除等),所以有些场合不使用。而且它本身就是基于lterator实现的但是由于类型转换的问题,所以会比直接使用lterator慢一点,但是还好,时间复杂度都是一样的。所以怎么选择,参考上面两种方式,做一个折中的选择。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值