java集合

Java集合

两大接口: CollectionMap

Collection

  • List
  • Queue
  • Set
img

LISTx

vector与ArrayList的区别

  • 线程安全
  • 扩容 (arraylist 1.5, vector 2)

Queue & Deque

Queue - FIFO; Deque - 两端都可以进出。

  • LinkedList
  • ArrayDeque
  • PriorityQueue

LinkedList Vs ArrayDeque

  • 普通队列,linkedlist 或者arraydeque
img
  • 栈,使用arraydeque

linkedList 和 arrayDeque的区别

Priority Queue

先队列的作用是能保证每次取出的元素都是队列中权值最小的

大小关系: 自然顺序或者传入比较器(comparator)

Unbound

二叉小顶堆

BlockingQueue 1

阻塞队列与java concurrency 关联紧密。


Stack

jdk 官方文档不推荐是用Stack作为栈来使用, stack 继承自Vector , 而Vecotr 已经不推荐使用了。

可使用:

Deque<Integer> stack = new ArrayDeque<>();
---

Set

  • HashSet

  • LinkedHashSet

    HashSet + LinkedList: 由链表保证元素有序 + 由哈希表保证元素唯一

  • TreeSet

    红黑树,特定是有序 (natural order / Comparator)

Set底层为Map2,值放在Map的key,value是一个类似于placeholder的Object, 每个Key都指向这个Object。


TODO:

JDK集合类源代码整理 HashMap, ArrayList etc。。。


Reference

https://mp.weixin.qq.com/s/7WA1k31xmatsYTEfyMdLEQ

https://zhuanlan.zhihu.com/p/24877041


  1. 参考 Post not found: 多线程之阻塞队列 多线程之阻塞队列↩︎

  2. 关于Map,参考 Post not found: java集合之Map java集合之Map↩︎