美文网首页
集合框架

集合框架

作者: 若兮缘 | 来源:发表于2018-12-23 18:42 被阅读143次

    集合概述

    生活中的集合:人或事物聚集在一起。
    数学中的集合:具有某种特性的事物的整体。
    Java中的集合:是工具类,可以存储任意数量的具有共同属性的对象
    Java集合中只能存放对象的引用,不能存放基本类型数据

    集合与数组

    数组的缺陷:长度必须确定且不能改变,类型固定,算法需自己实现
    而集合的长度是可以动态改变的,集合允许存储不同类型的对象,集合对外提供了很多算法实现。
    用数组去满足存储固定长度的数据场景,比如存储20名学生的信息;而集合更适用于动态变化的场景,比如存储购物车的商品信息。

    应用场景
    • 无法预测存储数量的数据
    • 同时存储具有一对一关系的数据(键值对)
    • 需要进行数据的增删
    • 数据重复问题
    • ……

    集合框架

    为了表示和操作集合而规定的一种统一的标准体系结构。

    分类
    • 单列集合Collection
      — List:元素有序、可包含重复元素
      — Set:元素无序、不包含重复元素
    • 双列集合Map:键值映射关系
    • 迭代器Iterator
    • 比较接口Comparable与Comparator
    主要组成
    1. 对外的接口
      表示集合的抽象数据类型,提供了让我们对集合中所表示的内容进行单独操作的可能
    2. 接口的实现
      实际上就是那些可复用的数据结构
    3. 对集合运算的算法
      这些算法通常是多态的,因为相同的方法可以在同一个接口被多个类实现时有不同的表现
    使用集合框架的好处
    • 减少了程序设计的辛劳
    • 提高了程序速度和质量
    • 减少学习和使用新的API的辛劳
    • 减少了设计新API的努力
    • 集合框架鼓励软件的复用
    集合框架的体系结构

    Collection接口

    用于表示任何对象或元素组,集合框架的顶层接口,想要尽可能以常规方式处理一组元素时,就使用该接口

    常用方法

    Iterator接口

    用于对集合容器进行向前的单方向遍历,通常称为迭代器。该接口的实例也是容器。在返回的迭代器这个容器中,已经将集合中的内容复制了一份。

    常用方法
    遍历集合
        //创建集合
        List list = new ArrayList();
        //添加元素
        list.add(1);list.add(2);list.add(3);
        //获取迭代器对象进行遍历
        Iterator iterator = list.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
    

    Comparable接口

    此接口强行对实现它的每个类的对象进行整体排序,这种排序被称为类的自然排序,该类有方法可以定义比较规则,该方法被称为它的自然比较方法。
    方法:int compareTo(T o) 定义比较顺序
    返回值:如果调用方法的对象小于指定对象,则返回负整数,大于则返回正整数,等于则返回0

    List接口

    List是元素有序并且可以重复的集合,称为序列,顺序性是List最重要的特性。
    List可以精确的控制每个元素的插入位置,或删除某个位置的元素。
    List的两个主要实现类是ArrayListLinkedList

    特有方法

    ListIterator接口

    list特有的迭代器,内含避免并发修改异常的算法。

    并发修改异常

    并发修改异常,java.util.ConcurrentModificationException
    如果在迭代集合的过程中,使用集合本身添加或删除元素,则会产生该异常。

        //创建集合
        List list = new ArrayList();
        //添加元素
        list.add(1);list.add(2);list.add(3);
        //遍历
        Iterator iterator = list.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
            //在迭代的过程中使用集合本身添加/删除元素,抛出异常ConcurrentModificationException
            //list.remove(0);
            list.add(4);
        }
    
    特有方法

    除了迭代器的hasNext()next()remove()方法,还包含以下方法

    使用列表迭代器解决并发修改问题

        //创建集合
        List list = new ArrayList();
        //添加元素
        list.add(1);list.add(2);list.add(3);
        //使用列表迭代器
        ListIterator iterator = list.listIterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
            //使用迭代器的添加方法进行添加元素
            iterator.add(4);
        }
        System.out.println(list);
        //[1, 4, 2, 4, 3, 4]
    

    相关文章

      网友评论

          本文标题:集合框架

          本文链接:https://www.haomeiwen.com/subject/xawnkqtx.html