集合分类
Collection:是所有单列集合的根接口,定义了基本的集合操作(添加、删除、清空);
Map:是所有双列集合的根接口,即键和值;
单列集合介绍:
List:有序集合、元素可重复、可通过索引访问集合中的元素
ArrayList:基于动态数组(默认为10,每次扩容为上次长度的二分之一)、有序、非线程安全、元素可以为null、可重复、查询快、插入删除慢(适合频繁读取的场景)
LinkedList:基于双向链表、有序、非线程安全、插入删除操作效率高、查询效率不高(适合频繁修改的场景)
Vector:基于动态数组、有序、可重复、查询快、插入删除慢、线程安全
Stack:基于动态数组、后进先出、线程安全
Set:无序集合、元素不可重复
HashSet:底层是HashMap(HashSet按照Hash算法来存储集合中的元素)、无序、唯一、允许为null、非线程安全、存取速度比较快
TreeSet:底层是TreeMap、有序、唯一、不允许为null
LinkedHashSet:底层是LinkedHashMap
Queue:ArrayDeque数组实现的双端队列,可以在队列两端插入和删除元素,数组队列,先进先出(FIFO),和LinkedList一样也是双向链表
PriorityQueue:优先队列,保存队列元素的顺序并不是按照加入的顺序,而是按照队列元素的大小进行排序的,数组实现的二叉树,完全二叉树实现的小顶堆(任意一个非叶子节点的权值,都不大于其左右子节点的权,不允许插入null元素
Deque:接口是Queue接口的子接口,它代表一个双端队列,当程序中需要使用“栈”这种数据结构时,推荐使用ArrayDeque
双列集合介绍:
HashMap:Map 接口使用频率最高的实现类,非线程安全(线程安全类ConcurrentHashMap)、允许null键null值、键不能重复、值可以重复、无序
LinkedHashMap:有序
HashTable:不允许null值null键、线程安全(并发性不如ConcurrentHashMap,不建议用)
Properties:用于处理属性文件,键和值都是字符串类型
TreeMap:实现SortMap接口,为了方便进行key排序操作提供了TreeMap集合,当用Iterator遍历TreeMap时,得到的记录是排过序的