Java集合框架主要包括两种类型的容器,

一种是集合(Collection),存储一个元素集合

Collection 接口又有 3 种子类型,List、Set 和 Queue。

另一种是图(Map),存储键/值对映射。

Map 接口又有 :AbstractMap SortedMap Hashtable

Java集合框架常用的实现类有 ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap、TreeMap等等。此外还有一个实现算法的Collections类。
 

Collection 集合 UML类图

java uml教程 java的uml_数组

Map集合uml类图

java uml教程 java的uml_数据_02

 1: 超级接口 Iterable:

             该接口中会返回一个迭代器,实现该接口的类都能作为forEach的对象。

java uml教程 java的uml_java uml教程_03

 2:Collection : 继承了 Iterable接口,并且可以被以下类实现

java uml教程 java的uml_集合_04

 3:List 接口

      1: 有序集合(也称为序列),可以精确控制每个元素的插入位置,可以通过索引访问元素,并搜索列表中的元素。

      2:该接口提供要给特殊的迭代器,称为 ListIterator 允许元素的插入和更换。

      3:LinkedList implements List,Deque 双链表实现了List和Deque接口,实现所有可选列表操作,此实现时不同步的,如果多个线程同时访问链接列表,并且至少有一个线程在结构上修改列表,则必须在外部进行同步。

          LinkedList 底层使用双向链表实现的,因此它对于数据增加删除操作效率比ArrayList要高。

          对于数据的查询需要操作指针,所以查询效率比较低

          LinkedList不是线程安全的

          数据可重复

   4:ArrayList 实现类:底层时数组实现的,并且默认的长度容量为10。

        ArrayList 底层是数组结构,通过索引小标可以快速的查找数据,所以它对数据的查询效率高的多

       ArrayList 不是线程安全的

      ArrayList 数据可重复性

5:Vector 是实现类,实现了可扩展的对象数组。像数组一样可以使用整数索引访问组件。

      Vector是线程安全的

      Vector 数据可重复

     Vector 通过数组来实现,但是效率一般比ArrayList低,如果不考虑线程安全,建议使用ArrayList.

3:Set 接口(无序接口)

       set接口不包含重复元素,相比较List 有序接口(存储顺序和存入顺序保持一致),Set接口元素不会保持这种顺序,它会实现数学意义上的排序。

       1:HashSet 此类实现了Set接口,由哈希表(HashMap)支持

            HashSet 修改时不同步的

           HashSet 允许存在空值

           HashSet 不允许存在相同的值存入集合中

      2: TreeSet 

            TreeSet 是线程不安全的

            TreeSet 实现了SortedSet接口,通过Comparator或者Comparable维护了一个排序顺序

     3:LinkedHashSet : 哈希表和链表实现了Set接口,具有可预测的迭代次序。并且通过数据的插入顺序对其进行顺序存储

4:Map 接口

     map只是一个接口,不是 Collection的子接口或者实现类,它是以键值对的形式进行存储的。

     将键映射到值的对象,地图不能包含重复的键,每个键可以映射最多一个值

    实现类包括 :HashMap  TreeMap  LinkedHashMap 和 HashTable

   HashMap 

      1: HashMap是基于哈希表的Map接口的非同步实现,允许使用 null 键和 null 值,但不能保证映射顺序

     2:底层是数组的实现,数组中每一项是个单向链表,即是 数组和链表的结合体

  HashTable

      1: HashTable 是基于哈希表的Map接口的同步实现,不允许使用 null值和 null键

      2:底层使用数组实现,数组中每一项是个单链表即数组和链表的结合体

  TreeMap

     1: 底层是二叉树

     2:线程不同步