集合
1.集合与数组
数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用。
集合(只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用。
2.集合结构图
20170905084554470.png3.list
List里存放的对象是有序的,同时也是可以重复的
3.1 ArrayList
ArrayList是基于数组的,在初始化ArrayList时,会构建空数组(Object[] elementData={})。ArrayList是一个无序的,它是按照添加的先后顺序排列,当然,他也提供了sort方法,如果需要对ArrayList进行排序,只需要调用这个方法,提供Comparator比较器即可
3.2 LinkedList
LinkedList是基于链表的,它是一个双向链表,每个节点维护了一个prev和next指针。同时对于这个链表,维护了first和last指针,first指向第一个元素,last指向最后一个元素。LinkedList是一个无序的链表,按照插入的先后顺序排序,不提供sort方法对内部元素排序。
3.3 Vector
该类和ArrayList非常相似,但是该类是同步的,可以用在多线程的情况,该类允许设置默认的增长长度,默认扩容方式为原来的2倍。
4.set
Set 具有与 Collection 完全一样的接口,只是行为上不同,Set 不保存重复的元素。
Set 接口存储一组唯一,无序的对象。
4.1 HashSet
该类实现了Set接口,不允许出现重复元素,不保证集合中元素的顺序,允许包含值为null的元素,但最多只能一个。
4.2 LinkedHashSet
具有可预知迭代顺序的 Set 接口的哈希表和链接列表实现。(有序)
4.3 TreeSet
该类实现了Set接口,可以实现排序等功能。
5.Map
5.1 HashMap
HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。
该类实现了Map接口,根据键的HashCode值存储数据,具有很快的访问速度,最多允许一条记录的键为null,不支持线程同步 无序
5.2 TreeMap
继承了AbstractMap,并且使用一颗树。有序
5.3 Hashtable
Hashtable 是 Dictionary(字典) 类的子类,位于 java.util 包中。线程安全的
5.4 LinkedHashMap
继承于HashMap,使用元素的自然顺序对元素进行排序.
5.5 线程安全map
SynchronizedMap、HashTable、ConcurrentHashMap