深入浅出JAVA常用集合类

54 阅读1分钟

List接口

ArrayList:底层是数组,查询修改快增删慢,线程不安全

LinkedList:底层是链表,增删快查询修改慢,线程不安全

CopyOnWriteArrayList:底层是数组,查询修改快增删慢,线程安全

Set接口:

HashSet:底层哈希表,HashSet存储的值其实就是HashMap中的key值

LinkedHashSet:底层哈希表+双向链表,通过双向链表来保存插入的顺序

TreeSet:底层红黑树,红黑树是一种自平衡的搜索二叉树,对比平衡二叉树的区别在于,红黑树的左右子树高度差不需要严格为1,因此红黑树的插入删除对树结构的操作次数更少,红黑树应用更加广泛。

Map接口:

HashMap:底层哈希表,线程不安全。

ConcurrentHashMap:底层哈希表,线程安全。

LinkedHashMap:底层哈希表+双向链表,通过双向链表来保存插入的顺序

TreeMap:底层红黑树,红黑树是一种自平衡的搜索二叉树,对比平衡二叉树的区别在于,红黑树的左右子树高度差不需要严格为1,因此红黑树的插入删除对树结构的操作次数更少,红黑树应用更加广泛。

Queue接口:

PriorityQueue:底层最小堆/二叉堆,堆顶元素最小。最大堆:new PriorityQueue<>(Comparator.reverseOrder());

ArrayBlockingQueue:底层数组,线程安全的队列,在线程池中做等待队列,有长度限制。

LinkedBlockingQueue:底层链表,线程安全的队列,在线程池中做等待队列,默认没有长度限制,可以设置队列的长度。

线程安全:

Collections.synchronizedList(List list) Collections.synchronizedSet(Set set) Collections.synchronizedSortedSet(SortedSet s) Collections.synchronizedMap(Map<K, V> m) Collections.synchronizedSortedMap(SortedMap<K, V> m)

HashMap详解: