为了保存数目不确定的对象,JDK中提供了一系列特殊的类,这写类可以存储任意类型的对象,并且长度可变,统称为集合。这些类都位于util包中,使用的时候一定要注意导包的问题,否则会出现异常。
集合按照其存储结构可以分为两大类,即单列集合(Collection)和双列集合(Map)。体系结构(常用的类和接口):

Collection:单列集合类的跟接口,用于存储一系列符合某种规则的元素。
    |--List:Collection的子接口,特点是元素有序,元素可重复。
        |--ArrayList:List的接口的一个实现类,ArrayList内部封装了一个长度可变的数组对象,当存入的元素超过数组长度时,ArrayList会在内部中分配一个更大的数组来存储这些元素,因此可将ArrayList集合看做一个长度可变的数组。查询效率较高。
        |--LinkedList:List集合的一个实现类,该集合内部维护了一个双向循环列表,链表中的每一个元素都使用引用的方式来记住它的前一个元素和后一个元素,从而可以将所有的元素彼此连接起来。增删效率较高。
    |--Set:Collection的子接口,特点是元素无序,并且不可重复。
        |--HashSet:Set接口的实现类,HashSet底层实际上是一个HashMap,HashSet其实是HashMap中的Key的部分。
        |--TreeSet:Set接口的实现类,内部采用自平衡的排序二叉树来存储元素,这样结构可以保证TreeSet集合中没有重复的元素,并且可以对元素进行排序。
Map:双列集合类的根接口,用于存储键(Key)、值(Value)映射关系的元素,每个元素都包含一对键值。
    |--HashMap:Map的实现类,它用于存储键值映射关系,但必须保证不出现重复的键,键相同,值覆盖。
    |--TreeMap:Map的实现类,它也用于存储键值映射关系,但必须保证不出现重复的键。在TreeMap中是通过二叉树的原理保证键的唯一性,这与TreeSet集合的存储原理一样,因此TreeMap中所有的键是按照某顺序排列的。

注:元素有序是指存入数据的数据和取出数据的顺序是一致的。

Last modification:August 30, 2017
If you think my article is useful to you, please feel free to appreciate