jdk 集合大家族之Collection 前言: 此处的集合指的是java集合框架中的实现了Collection接口相关的类。所以主要为List Set 和 Queue 其他章节会专门介绍Map相关。 1. List 1.1 ArrayList + 从数组中间删除某个元素需要很大代价,因为被删除之后 ...
分类:
其他好文 时间:
2020-01-14 23:50:36
阅读次数:
99
"剖析面试最常见问题之Java集合框架" "说说List,Set,Map三者的区别?" "Arraylist 与 LinkedList 区别?" "补充内容:RandomAccess接口" "补充内容:双向链表和双向循环链表" "ArrayList 与 Vector 区别呢?为什么要用Arrayli ...
分类:
编程语言 时间:
2020-01-14 12:52:29
阅读次数:
84
一、EnumMap 概述 EnumMap 是一个用于存储 key 为枚举类型的 map,底层使用数组实现(K,V 双数组)。下面是其继承结构: public class EnumMap<K extends Enum<K>, V> extends AbstractMap<K, V> implement ...
分类:
编程语言 时间:
2020-01-13 23:52:30
阅读次数:
112
本篇文章尝试从What、Why、How这三个角度来探索Java中的弱引用,理解Java中弱引用的定义、基本使用场景和使用方法。由于个人水平有限,叙述中难免存在不准确或是不清晰的地方,希望大家可以指出,谢谢大家:) 1. What——什么是弱引用?** Java中的弱引用具体指的是java.lang. ...
分类:
编程语言 时间:
2020-01-13 22:12:52
阅读次数:
113
HashMap HashMap 的重要性和面试问到的频率不言而喻,这篇文章我们就 HashMap 的原理和代码来进行分析。 什么是哈希表 讨论哈希表之前,我们先来把一些常用的数据结构的增删改查的性能比较一下。 数组 :采用一段连续的存储单元来存储数据。对与指定下标的查找和插入,其时间复杂度为 O(1 ...
分类:
编程语言 时间:
2020-01-12 22:17:25
阅读次数:
99
LinkedHashMap LinkedHashMap 是一个链表,哈希表,线程不安全的,允许 key 和 value 为 null。 它继承自 HashMap ,实现了 Map 接口,内部维护了一个双向链表。每次插入数据或者访问,修改数据时,会增加节点或者调整链表的节点顺序,以决定迭代输出的顺序。 ...
分类:
编程语言 时间:
2020-01-12 22:08:44
阅读次数:
96
Deque 双端队列,既可以当队列使用,也可以当栈使用。是一个接口。我们来看看 Deque 当作栈和队列时对应的方法。 队列: | Queue Method | Equivalent Deque Method | 说明 | | | | | | | | 向队尾插入元素,失败则抛出异常 | | | | ...
分类:
编程语言 时间:
2020-01-12 21:57:31
阅读次数:
81
阻塞队列 如果我们想要在线程安全的场景下使用队列,只有两个选择,一个是上面讲过的 ConcurrentLinkedQueue,还有就是我们要将的阻塞队列。 从名字我们就可以判断出阻塞队列适用的场景,那就是生产者消费者模式。阻塞对垒的添加和删除操作在队列满或者空的时候会被阻塞。这就保证了线程安全。 阻 ...
分类:
编程语言 时间:
2020-01-12 21:50:31
阅读次数:
74
TreeMap 1. TreeMap 实现了 NavigableMap 接口,而 NavigableMap 接口继承自 SortedMap 接口,所以 TreeMap 是有序的。 2. TreeMap 底层是红黑树,所以时间复杂度为 log(n)。 3. TreeMap 并不是线程安全的。 4. T ...
分类:
编程语言 时间:
2020-01-12 21:47:35
阅读次数:
79
ConcurrentHashMap ConcurrentHashMap 是一个能够保证线程安全的 。 为什么使用concurrentHashMap HashTable 是一个典型的 。虽然 HashTable 的所有方法都用 synchronzied 修饰,但是如果我们编程时将 get 和 put ...
分类:
编程语言 时间:
2020-01-12 21:39:34
阅读次数:
78