集合

2019-05-22  本文已影响0人  Auncle_

1.集合与数组

数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用。

集合(只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用。

2.集合结构图

20170905084554470.png

3.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

上一篇下一篇

猜你喜欢

热点阅读