
数据结构
都让你们叫老了
这个作者很懒,什么都没留下…
展开
-
浅谈HashMap,LinkedHashMap,ConcurrentHashMap、synchronizedMap(四.synchronizedMap)
直接看synchronizedMap源码吧,相对来说简单很多了。 public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m) { // 返回一个synchronizedMap对象。 return new SynchronizedMap<>(m); ...原创 2018-04-14 11:19:58 · 245 阅读 · 0 评论 -
浅谈HashMap,LinkedHashMap,ConcurrentHashMap、synchronizedMap(五.总结)
前面简单说了一下Map,这里简单的总结一下。HashMap数据结构数组+链表+红黑树。优点理想状态下:插入和查找时间复杂度为O(1)。缺点无序:既不能按照访问循序排序,也不能根据插入循序进行排序。不支持高并发:在多线程情况快,其扩容机制会出现死循环。所以根据这两个缺点,开发人员又编写了相对应的Map类有顺序的Map——LinkedHas...原创 2018-04-14 13:44:06 · 367 阅读 · 0 评论 -
浅谈HashMap,LinkedHashMap,ConcurrentHashMap、synchronizedMap(一.HashMap)
本文旨在记录自己所学,自己理解,并不深入。为什么Map要以Hash(键值对)方式存储我们都知道Map是以键值对的方式存储的,但是想过没有,为什么要有这种方式?这种方式的优点是什么?想知道这点,我们要知道数组、链表的特性。 数组 链表 静态分配内存(栈中),大小固定 动态分配内存(堆中),大小可变 内存中连续存放 内存地址可能是分散的,所以必须通...原创 2018-04-03 18:12:00 · 432 阅读 · 0 评论 -
浅谈HashMap,LinkedHashMap,ConcurrentHashMap、synchronizedMap(三.ConcurrentHashMap)
我们前面说过了为什么要有HashMap,以及有序的HashMap——LinkedHashMap,那么我们随着深入,就想到了线程安全问题,可以看到,不论是HashMap还是LinkedHashMap源码中都没有锁的实现。那么也就是说HashMap以及LinkedHashMap都不是线程安全的。那么有没有线程安全的Map呢?当然有,那就是ConcurrentHashMap以及synchronizedM...原创 2018-04-12 10:03:18 · 14711 阅读 · 0 评论 -
浅谈HashMap,LinkedHashMap,ConcurrentHashMap、synchronizedMap(二.LinkedHashMap)
说完HashMap,我们我们如果想要有序的Map怎么办。取出来之后再排序,不是太复杂。 所以我们有LinkedHashMap。LinkedHashMap既然LinkedHashMap是有序的,那么为什么是有序的?首先我们从名字上分析,LinkedHashMap和HashMap不是继承就是实现,那么数据结构应该也是类似的,采用hash表(数组+链表的形式)。等下,HashMap中既然存...原创 2018-04-06 22:04:39 · 1374 阅读 · 0 评论