Collection的遍历方式

迭代器

1、迭代器概述

迭代器是用来遍历集合的专用方式(数组没有迭代器),在Java中迭代器的代表是Iterator

Collection集合获取迭代器的方法

方法名称说明
Iterator<E> iterator返回集合中的迭代器对象,该迭代器对象默认指向当前集合的第一个元素

Iterator迭代器中的常用方法

方法名称说明
boolean hasNext()询问当前位置是否有元素存在,存在返回true,不存在返回false
E  next()获取当前位置的元素,并同意将迭代器指向下一个元素处
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;

public class DieDaiQi {
    public static void main(String[] args) {
        Collection<String>c=new ArrayList<>();
        c.add("王一博");
        c.add("王艺笛");
        c.add("王鹤棣");
        c.add("王凯");
        System.out.println(c);
        //使用迭代器对象遍历集合
        //从集合中获取迭代器对象
        Iterator<String>iterator=c.iterator();
        /*
        System.out.println(iterator.next());
        System.out.println(iterator.next());
        System.out.println(iterator.next());
        System.out.println(iterator.next());

         */
        //我们应该使用循环迭代器来遍历集合
      while (iterator.hasNext()) {
          System.out.println(iterator.next());
      }
    }
}

增强for循环

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

}

增强for循环可以用来遍历集合或者数组

增强for循环遍历集合,本质就是迭代器遍历集合的简化写法

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

public class ForLoop {
    public static void main(String[] args) {
        Collection<String> a=new ArrayList<>();
        a.add("王一博");
        a.add("王艺笛");
        a.add("王鹤棣");
        a.add("王凯");
        System.out.println(a);
        //使用增强for循环遍历集合或数组
        for(String ele:a){
            System.out.println(ele);
        }
        String []names={"喵喵","汪汪","旺旺"};
        for (String ele1:names){
            System.out.println(ele1);
        }
    }
}

Lambda表达式遍历集合

*得益于JDK8实行的新技术Lambda表达式提供了一种更简单,更直接的方式来遍历集合。

需要使用Clooection 的如下方法来完成

方法名称

说明

default void forEach(consumer<?super  T>action)结合lambda遍历集合
import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Consumer;

public class Lambda {
        public static void main(String[] args) {
            Collection<String> a=new ArrayList<>();
            a.add("王一博");
            a.add("王艺笛");
            a.add("王鹤棣");
            a.add("王凯");
            System.out.println(a);
            /*
            //default void forEach(consumer<?super T>action)	结合lambda遍历集合
            a.forEach(new Consumer<String>() {
                @Override
                public void accept(String a) {

                }
            });

             */
            /*
            a.forEach((String s)->{
            System.out.println(s);
            });
            a.forEach( s-> System.out.println(s));

             */
            a.forEach(  System.out::println);
    }
}

案例:遍历集合中的自定义对象

需求:展示多部电影

分析:①每部电影都是一个对象,多部电影要使用集合装起来。

②遍历集合中的三个电影对象,输出每部电影的详情信息

注意:集合存储对象,并不是存储对象本身,而是存储的是对象的地址,要想存储对象本身,就要重写toString方法

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

/**
 * 目标:完成电影信息的展示。
 * new movie("肖申克的救赎",9.7,“罗宾斯“)
 * new movie("霸王别姬",9.6,“张国荣,张丰毅“)
 * new movie("阿甘正传",9.5,“汤姆.汉克斯“)
 */
public class Anli {
    public static void main(String[] args) {
//创建一个容器,负责存储多部电影对象
        Collection <Movie> movies=new ArrayList<>();
        movies.add(new Movie("肖申克的救赎",9.7,"罗宾斯"));
        movies.add(new Movie("霸王别姬",9.6,"张国荣,张丰毅"));
        movies.add(new Movie("阿甘正传",9.5,"汤姆.汉克斯"));
        System.out.println(movies);
        for (Movie movie : movies) {
            System.out.println("电影名:" + movie.getName());
            System.out.println("评分:" + movie.getScore());
            System.out.println("演员:" + movie.getActor());
            System.out.println("-----------------------------------");
        }
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值