Collection集合的遍历,集合转数组,Iterator迭代器 day12

package com.shujia.day12;

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

/*
    Collection集合如何遍历?

    学习集合的4个步骤:
        1、如何创建集合对象?
        2、如何创建元素对象?
        3、如何将元素对象添加到集合中?
        4、如何遍历集合?

调用Collection接口中的iterator()方法获取集合对应的迭代器对象
Iterator类中有方法可以给我们使用获取元素对象
Iterator接口中提供了一个方法hasNext(),帮助我们判断下一个位置上是否有元素
next方法有返回值是Object类型的,该方法就是获取元素的方法
 */
public class CollectionDemo3 {
    public static void main(String[] args) {
        //创建一个集合对象
        Collection c1 = new ArrayList();

        //添加元素
        c1.add("hello");
        c1.add("java");
        c1.add("world");
        c1.add("hello");
        c1.add("hadoop");

        //遍历集合
        //方式1:Object[] toArray() 把集合转成数组,可以实现集合的遍历
//        Object[] arr1 = c1.toArray();       //将集合转为Object类型的数组
//        for (int i = 0; i < arr1.length; i++) {
//            Object o = arr1[i]; // Object o = "hello"     相当于多态
//            String s = (String)o;//向下转型目的是调用String类型的length()方法
//            System.out.println(s + ", " + s.length());
//        }

        //方式2:Iterator iterator() 迭代器遍历,Collection集合的专用遍历方式,迭代器遍历的时候,无法使用集合的方法对集合本身做改动。
//通过集合添加会使原集合的版本号发生改变,从而和迭代器的版本号不一样,抛出异常。
//List中特有的迭代器中的add方法,不仅可以对迭代器中元素进行添加,底层也针对原集合进行添加元素
        //将原集合以及迭代器的版本号也设置成一样的了,所以将来再检查版本号的时候,原集合和迭代器的版本号是一致的
        //这样就不会产生并发修改异常了
        //调用Collection接口中的iterator()方法获取集合对应的迭代器Iterator的对象iterator
        //迭代器对象中存储了集合中每一个元素,Iterator类中有方法可以给我们使用获取元素对象
        Iterator iterator = c1.iterator(); //Iterator iterator = new Itr()
        //通过观察源码发现,Itr类中只有next方法有返回值是Object类型的,该方法就是获取元素的方法
//        Object o = iterator.next(); //Object o = "hello"    迭代器调用next方法获取元素
//        System.out.println(o);
//        Object o1 = iterator.next();
//        System.out.println(o1);
//        Object o2 = iterator.next();
//        System.out.println(o2);
//        Object o3 = iterator.next();
//        System.out.println(o3);
//        Object o4 = iterator.next();
//        System.out.println(o4);
//        Object o5 = iterator.next();
//        System.out.println(o5);
        //我们应该在next方法调用之前,先看一看迭代器中下一个位置上是否有元素,若有元素,才进行调用
        //Iterator接口中提供了一个方法hasNext(),帮助我们判断下一个位置上是否有元素
        while (iterator.hasNext()){
            Object o = iterator.next();
            System.out.println(o);
        }
        System.out.println("=====================]");
        while (iterator.hasNext()){
            Object o = iterator.next();
            System.out.println(o);
        }



    }
}

posted @ 2024-08-09 22:30  ていせい  阅读(4)  评论(0编辑  收藏  举报