摘要:
HashSet 与 LinkedHashSet HashSet 和 LinkedHashSet 是对 HashMap 和 LinkedHashMap 的简单包装,对 HashSet 的函数调用都会转换成合适的 HashMap 方法。LinkedHashSet 的函数会转换成合适的 LinkedHas 阅读全文
摘要:
LinkedHashMap LinkedHashMap 是一个链表,哈希表,线程不安全的,允许 key 和 value 为 null。 它继承自 HashMap ,实现了 Map 接口,内部维护了一个双向链表。每次插入数据或者访问,修改数据时,会增加节点或者调整链表的节点顺序,以决定迭代输出的顺序。 阅读全文
摘要:
TreeMap 1. TreeMap 实现了 NavigableMap 接口,而 NavigableMap 接口继承自 SortedMap 接口,所以 TreeMap 是有序的。 2. TreeMap 底层是红黑树,所以时间复杂度为 log(n)。 3. TreeMap 并不是线程安全的。 4. T 阅读全文
摘要:
ConcurrentHashMap ConcurrentHashMap 是一个能够保证线程安全的 。 为什么使用concurrentHashMap HashTable 是一个典型的 。虽然 HashTable 的所有方法都用 synchronzied 修饰,但是如果我们编程时将 get 和 put 阅读全文
摘要:
HashMap HashMap 的重要性和面试问到的频率不言而喻,这篇文章我们就 HashMap 的原理和代码来进行分析。 什么是哈希表 讨论哈希表之前,我们先来把一些常用的数据结构的增删改查的性能比较一下。 数组 :采用一段连续的存储单元来存储数据。对与指定下标的查找和插入,其时间复杂度为 O(1 阅读全文
摘要:
阻塞队列 如果我们想要在线程安全的场景下使用队列,只有两个选择,一个是上面讲过的 ConcurrentLinkedQueue,还有就是我们要将的阻塞队列。 从名字我们就可以判断出阻塞队列适用的场景,那就是生产者消费者模式。阻塞对垒的添加和删除操作在队列满或者空的时候会被阻塞。这就保证了线程安全。 阻 阅读全文
摘要:
Queue 队列是一种支持 FIFO 的数据结构或者容器。Queue 接口下面的实现类包括 Deque,非阻塞队列和阻塞队列。 PriorityQueue PriorityQueue 是一个基于优先级的无界队列。比如我们的作业系统中,当一个作业完成后,在所有等待调度的作业中选择一个优先级最高的作业来 阅读全文
摘要:
Deque 双端队列,既可以当队列使用,也可以当栈使用。是一个接口。我们来看看 Deque 当作栈和队列时对应的方法。 队列: | Queue Method | Equivalent Deque Method | 说明 | | | | | | | | 向队尾插入元素,失败则抛出异常 | | | | 阅读全文