前言

Java集合框架概述; 主要总述Java集合框架的设计理念, 组成和基本接口(及其区别等)

    一. 设计理念

    1. 在Java 2之前,Java是没有完整的集合框架的。它只有一些简单的可以自扩展的容器类,比如Vector,Stack,Hashtable等)

    2. Java集合其实就是一组对象的集合

    3. 独立于实现细节, 方便重用, 保证向下兼容(即保留了Vector等旧的API)

    4. 加强了API之间的互通信, 减少了新API的学习: 提供尽量统一的接口

    二. 基本组成

    2.1 总述

    Java集合框架主要分为三个部分: 接口, 实现和算法

    2.1-1 接口

    接口指的是以CollectionMap为起始的一系列公用接口

    实际上从Map出发的并不是真正的集合, 只是其包含集合视图操作, 所以也将其归入集合框架中

    Collection出发的公用接口主要有以下几个, 也是这次会着重讲解和比较的; 当然, 下面的接口并不全面, 在后面会逐渐扩展和补充

    集合框架基本接口

    Map出发的公用接口如下

    集合框架基本接口

    当然, 上述列举出来的子接口都是直接继承自Collection或者Map, 对于其子接口的子接口, 这里并没有列出在这里(比如NavigableMap接口是SortedMap接口的子接口, 而不是直接继承Map的, 所以这里并没有直接列出来)

    2.1-2 实现

    实现指的是接口的实现类, 这里笔者在官网找到一张表, 如下, 很好的列出了平时重点所用的实现类

    InterfaceHash TableResizable ArrayBalanced TreeLinked ListHash Table + Linked List
    SetHashSet
    TreeSet
    LinkedHashSet
    List
    ArrayList
    LinkedList
    Deque
    ArrayDeque
    LinkedList
    MapHashMap
    TreeMap
    LinkedHashMap

    当然, 还应该包含Java 2以前几个旧API, 即: VectorStackHashtable

    2.1-3 算法

    (1). 算法

    算法指的是以Collections为主的提供的一系列对集合的操作, 参见下图, 列出了其提供的常用算法

    集合框架基本接口

    下面对上述方法进行一些简单解释

    1. sort(List): 使用归并排序, 保证NlogN的时间复杂度和稳定性

    2. binarySearch(List, Object): 在一个有序的List中使用二分查找

    3. reverse(List): 逆转List

    4. shuffle(List): 将List中的元素随机重排

    5. fill(List, Object): 使用指定值(Object)