Collection 和 Iterator 的简单介绍

1.首先是 Collection

这里写图片描述

List :可以存储重复,有序 。 set 不可以重复,无序

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

public class CollectionDemo {

    /**
     * Collection 接口中的方法,是集合中所有实现类必须拥有的方法 使用 Collection 接口实现类, ArrayList
     * implements List ,List extends Collection 方法的执行,都是实现的重写
     */

    public static void main(String[] args) {

//   * Collection 的基本方法
        myClear();
        myContains();
        myToArray();
        myRemove();

        fun();

    }

    /**
     * void clear() 
     * 清空集合,集合本身仍然存在
     */
    public static void myClear() {

        Collection<String> collection = new ArrayList<String>();
        collection.add("a");
        collection.add("b");
        System.out.println(collection);

        collection.clear();
        System.out.println(collection);
    }

    /**
     * boolean contains(Object o) 
     * 判断对象是否存在与集合中
     * 
     */
    public static void myContains() {

        Collection<String> collection = new ArrayList<>();
        collection.add("a");
        collection.add("b");
        collection.add("c");

        boolean b = collection.contains("c");
        System.out.println(b);
    }

    /**
     * Object[] toArray()
     * 集合转数组(数组长度不可变,集合长度可变)
     * 
     */
    public static void myToArray() {

        Collection<String> collection = new ArrayList<>();
        collection.add("a");
        collection.add("b");
        collection.add("c");

        Object [] objects = collection.toArray();
        for (int i = 0; i < objects.length; i++) {
            System.out.println(objects[i]);
        }
        System.out.println(objects);
    }

    /**
     * boolean remove(Object o)
     * 移除集合中指定的元素
     * 返回值:是否删除成功
     * 有重复元素时,只删除第一个
     */
    public static void myRemove() {

        Collection<String> collection = new ArrayList<>();

        collection.add("c");
        collection.add("a");
        collection.add("b");
        collection.add("c");


        System.out.println(collection);

        boolean b = collection.remove("c");

        System.out.println("是否删除成功:" + b + "  " + collection);

    }

    /**
     * 不给集合指定类型
     */
    public static void fun() {

        //结合可以存储任意类型的对象,不指定类型,什么都可以存
        Collection collection = new ArrayList<>();

        //向上转型,提升为 Object 类型
        collection.add("a");
        collection.add("b");
        collection.add("c");

        Iterator iterator = collection.iterator();

        while (iterator.hasNext()) {
            Object object = iterator.next();

            System.out.println(object);

            //向下转型为 String
            String string = (String) object;

            System.out.println(string.length());

        }


        //如果转错会出现类型转换异常。哈哈 ,可以用这个 instanceof
    }
}

2.接下来是 Iterator

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

public class IteratorDemo {

    /*
     *  A:迭代器概述:(其实就是遍历)
     *  a:java中提供了很多个集合,它们在存储元素时,采用的存储方式不同。
     *  我们要取出这些集合中的元素,可通过一种通用的获取方式来完成。
     *
     *  b:Collection集合元素的通用获取方式:在取元素之前先要判断集合中有没有元素,
     *  如果有,就把这个元素取出来,继续在判断,如果还有就再取出出来。一直把集合中的所有元素全部取出。这种取出方式专业术语称为迭代。
     *
     *  c:每种集合的底层的数据结构不同,例如ArrayList是数组,LinkedList底层是链表,但是无论使用那种集合,我们都会有判断是否有元素
     *  以及取出里面的元素的动作,那么Java为我们提供一个迭代器定义了统一的判断元素和取元素的方法
     * 
     *  
     *  接口 Iterator :两个抽象方法
     *      boolean hasNext() 判断集合中是否还有可以取出的元素,有返回 true
     *      next() 取出集合中的下一个元素
     *    
     *    Iterator 接口实现类
     *       Collection 接口定义方法:
     *       Iterator iterator()
     *    
     *    ArrayList 重写方法 iterator(),返回 Iterator接口的实现类的对象
     *    使用 ArrayList 集合的对象(面向接口编程,实现类是谁不重要了,重点是 Iterator 的两个方法)
     *      Iterator iterator = array.iterator(),运行结果就是 Iterator 接口的实现类对象
     *      iterator 是接口的实现类对象,调用方法 hasNext() 和 next() 集合元素迭代
     */

    public static void main(String[] args) {
        //实现类可以换成所有的子类,其余代码不用动,流弊,流弊
//      Collection<String> collection = new HashSet<String>();
        Collection<String> collection = new ArrayList<String>();
        collection.add("a");
        collection.add("b");
        collection.add("c");
        collection.add("d");

        //迭代器,对集合中的元素进行取出

        //调用集合的方法 iterator() 获取 Iterator 接口的实现类的对象,
        //这里的实现类对象为:ArrayList 的内部类 Itr ,具体实现请看 ArrayList API
        Iterator<String> iterator = collection.iterator();

        //接口的实现类对象,调用方法 hasNext() 判断集合中是否有元素
//      boolean b = iterator.hasNext();
//      System.out.println("是否有元素可以取出:" + b);

        //接口的实现类对象,嗲用方法 next()取出集合中的元素
//      String s = iterator.next();


        //完整写法 
        while (iterator.hasNext()) {

            String string = (String) iterator.next();
            System.out.println(string);
        }

        //调用 Iterator<String> iterator = collection.iterator(); 的时候会创建一个指针,只在 -1 位,
        //然后 iterator.hasNext() 检查是否有下一个元素
        //iterator.next() 移动指针,如果不调用,指针永远不动,上面的代码就死循环了
        //具体实现请看源码,哈哈
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值