集合

1.集合概述

    目前代码中对于多个数据处理过程中,我们采用的方式是数组方式。

    数组操作存在的问题:

        1.复用度差!目前对于数据操作有且只能支持一个数据类型,一旦需要操作其他类型,全部重构,从头来过。

        2.空间固定!数组的空间一旦在创建过程中确定,空间无法修改。

        3.方法较少!add remove modify get。。。 自己写的,方法自己实现,体验不好。Java中对于数组操作没有提供太多的有效方法!

    以上问题集合都可以解决!

        1.复用性,没有问题:集合创建才用了泛型模式,可以用户指定任意类型操作,既满足普适性,有满足数据类型一致化要求

        2.空间在合理范围以内自行扩展,不需要考虑容量的问题

        3.方法很多!操作性很好!

2.集合架构

    interface Collection<E>    Java中所有集合的总接口

    --| interface List<E>    List接口,数据存储可重复,有序。

    ----| class ArrayList<E>     重点 可变长数组

    ----| class LinkedList<E>    重点 双向链表模式

    ----| class Vector<E>    线程安全的可变长数组

    --| interface Set<E> Set接口,数据存储不可以重复,无序

    ----| HashSet<E>    底层存储数据的结构是一个哈希表,存储效率,查询效率极高!

    ----| TreeSet<E>    底层存储数据的结构是一个平衡二叉树结构,要求数据必须有比较方式!

3.Collection接口下单的常用方法

增删查

4.泛型上限

问题
代码演示

5.泛型通配符

        boolean removeAll(Collection<?> c);    在当前集合中删除两个集合的交集

        boolean retainAll(Collection<?> c);    在当前集合中保留两个集合的交集

        boolean containsAl(Collection<?> c);    判断传入的参数集合是不是当前集合的子集合

        ?在当前情况下描述的场景为,不限制传入参数Collection集合中的保存元素。这里只要求参数类型是Collection,里面保存元素无所谓。

6.集合使用迭代器

    6.1 迭代器概述和操作模式

集合引用和迭代器的关系

        迭代器是操作集合中元素的第二种方式,后期可以延展使用到很多地方,并且存在一个升级版内容。【增强for循环】

        迭代器和集合本身有着密切关系,首先迭代器的获取,就是通过集合对象得到对应当前集合的迭代器。

        获取迭代器方法:Interator<E> iterator();

                获取迭代器对象,泛型对应的具体数据类型和集合中约束的泛型具体数据类型一致。

        迭代器操作使用到的方法: 

                boolean hasNest();  判断当前集合中是否可以继续得到元素,继续遍历。

                E nex();  1.获取迭代器当前指向的元素。2.将迭代器指向下一个元素。

                void remove();  删除通过next获取到的元素

        注意:

            1.remove方法只能删除next方法已经获取到的元素

            2.remove方法只能在next方法后执行,且不能快过一个next执行

            3.没有next不能使用remove

    6.2 使用迭代器操作集合

使用迭代器操作集合
使用迭代器操作集合

    6.3迭代器和集合引用数据类型变量冲突问题

迭代器和集合引用数据类型变量冲突问题
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。