Java Collection集合的遍历方式

Java Collection集合的遍历方式

1.迭代器

迭代器遍历概述

  • 遍历就是一个一个的把容器中的元素访问一遍
  • 迭代器在Java中的代表是iterator,迭代器是集合的专用遍历方式

Collection集合获取迭代器

在这里插入图片描述

Iterator中常用方法

在这里插入图片描述

实例:

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

/**
 * 目标:初步掌握迭代器器的是使用
 * */

public class ItratorDemo {
    public static void main(String[] args) {
        Collection<String> list = new ArrayList<>();
        list.add("java");
        list.add("python");
        list.add("c");
        list.add(".net");

        //1.获取对应集合的迭代器对象
        Iterator<String> it =  list.iterator();

        //System.out.println(it.next());
        //System.out.println(it.next());
        //System.out.println(it.next());
        //System.out.println(it.next());

        while (it.hasNext()){
            String str = it.next();
            System.out.println(str);
        }

    }
}

总结

  1. 迭代器的默认位置在哪里?
    • Iterator iterator:得到迭代器对象,默认指向当前集合的索引0
  2. 迭代器如果取元素越界会出现什么问题。
    • 会出现NoSuchElementException异常。

2.foreach/增强for循环

  • 增强for循环:既可以遍历集合也可以遍历数组
  • 他是JDK5之后出现的,其内部原理是一个Iterator迭代器,遍历集合相当于是迭代器的简化写法。
  • 实现Iterator接口的类才可以使用迭代器和增强for,Collection接口实现了Iterator接口

格式:

for (元素数据类型 变量名 : 数组或者Collection集合){

​ //在此使用变量即可,该变量就是元素

}

实例:

import java.util.ArrayList;
import java.util.Collection;

/**
 * 目标:初步学习掌握增强for(foreach)
 * */

public class ForEachDedo {
    public static void main(String[] args) {
        Collection<String> list = new ArrayList<>();
        list.add("java");
        list.add("python");
        list.add("c");
        list.add("c++");
        list.add("c#");

        //利用增强for进行循环遍历
        for(String str : list){
            System.out.println(str);
        }

    }
}

总结

  1. 增强for可以遍历那些容器?

    • 既可以遍历集合也可以遍历数组。
  2. 增强for的关键是记住他的遍历格式

    • for (元素数据类型 变量名 : 数组或者Collection集合){
      
      		//在此使用变量即可,该变量就是元素
      
      }		
      

3.Lambda表达式

Lambda表达式遍历集合

  • 得益于JDK8开始的新技术Lambda表达式,提供了一种更简单,更直接的遍历集合的方式

Collection结合Lambda遍历的API

在这里插入图片描述

实例:

import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Consumer;

/**
 * 目标:初步掌握Lam表达式遍历集合
 * */

public class ForEachDemo1 {
    public static void main(String[] args) {
        Collection<String> list = new ArrayList<>();
        list.add("java");
        list.add("python");
        list.add("c");
        list.add("c++");
        list.add("c#");

        //利用Lambda表达式遍历集合
        list.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });

        System.out.println("-----------简化代码---------");

        list.forEach(s ->System.out.println(s));

    }
}

4.综合使用案例

public class Moive {
    private String name;
    private double score;
    private String actor;

    public Moive() {
    }

    public Moive(String name, double score, String actor) {
        this.name = name;
        this.score = score;
        this.actor = actor;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }

    public String getActor() {
        return actor;
    }

    public void setActor(String actor) {
        this.actor = actor;
    }
}
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.function.Consumer;

public class TestDemo {
    public static void main(String[] args) {
        //1.创建Movie对象
        Moive m1 = new Moive("《你好,李焕英》", 9.6, "贾玲,沈腾,张小斐");
        Moive m2 = new Moive("《唐人街探案》", 8.5, "王宝强,刘昊然,陈赫");
        Moive m3 = new Moive("《你好,李焕英》", 8.6, "雷佳音,杨幂");

        //2.创建集合对象
        Collection<Moive> moives = new ArrayList<>();

        //3.将对象添加到集合中
        moives.add(m1);
        moives.add(m2);
        moives.add(m3);

        //4.利用foreach遍历集合
        System.out.println("=========利用增强for遍历集合======");
        for (Moive moive : moives) {
            System.out.println(moive.getName());
            System.out.println(moive.getScore());
            System.out.println(moive.getActor());
            System.out.println("=========================");
        }

        //4.利用迭代器遍历循环
        System.out.println("=========利用迭代器遍历循环======");
        Iterator<Moive> it = moives.iterator();

        while(it.hasNext()){
            Moive m = it.next();
            System.out.println(m.getName());
            System.out.println(m.getScore());
            System.out.println(m.getActor());
            System.out.println("===========================");
        }

        //4.利用Lambda表达式遍历循环
        System.out.println("=========利用Lambda表达式遍历循环======");
        moives.forEach(moive ->{
                System.out.println(moive.getName());
                System.out.println(moive.getScore());
                System.out.println(moive.getActor());
        });

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值