美文网首页
集合框架

集合框架

作者: 若兮缘 | 来源:发表于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