2019-7-19

作者: 小程有话说 | 来源:发表于2019-07-19 18:55 被阅读0次

部分常用容器类

HashMap

底层数据结构,数组 + 链表/红黑树
链表类 - Node - 单链表

static class Node<K,V> implements Map.Entry<K,V> {
        final int hash;
        final K key;
        V value;
        Node<K,V> next;
}

红黑树类 - TreeNode

static final class TreeNode<K,V> extends LinkedHashMap.Entry<K,V> {
        TreeNode<K,V> parent;  // red-black tree links
        TreeNode<K,V> left;
        TreeNode<K,V> right;
        TreeNode<K,V> prev;    // needed to unlink next upon deletion
        boolean red;
}

HashTable

线程安全,数据强一致,size isEmpty contains get put ... 等方法使用synchronized修饰。
线程安全带来的代价是性能较差。

ConcurrentHashMap

线程安全,数据弱一致(get请求是无锁的,所以在get请求时可能会读取到老数据,不能保证每次读取都是最新数据)。
TreeNode,与HashMap中TreeNode相同。
put方法会使用synchronized对操作对象加锁。

ConcurrentSkipListMap

线程安全,数据弱一致。
跳表,redis中map就是通过跳表实现的,跳表相比红黑树,优点是查询速度稳定,不会因为红黑树的再平衡而长时间等待。
相比ConcurrentHashMap,更加适用于大数据量场景。

相关文章

  • 2019-7-19

    部分常用容器类 HashMap 底层数据结构,数组 + 链表/红黑树链表类 - Node - 单链表 红黑树类 -...

  • 2019-7-19

    在一篇文章看到一段话说的很好忍不住转载过来分享一下: 真正的浪漫是能在熟悉的地方欣赏风景,而最...

  • 还是好人比较多

    2019-7-19 星期五 暴雨 今天是儿子小班的期末汇报家长会,从公司出门走路不到十分...

  • 知错能改便是好孩子

    2019-7-19 农历:六月十七 星期五 天气:晴 气温:28~39 学习内容:1、含德之家YY语音频道学习。 ...

  • DAY-1

    2019-7-19 ①10:00-12:45航班 成都-北京 集体行动的时候,最怕道不同不相为谋,还有人拿捏着官腔...

  • 2019-7-19(歧义)

    今天我家先生休息,决定一起去看望爸妈。早早地起来就出门了。 我们所在的城市,种类丰富又美味的早点集中在"小南门“附...

  • 鉴峰丨心性,找到你自己

    鉴峰丨心性,找到你自己 来自专栏鉴峰笔记 鉴峰自我管理 [连续签到第557天] 2019-7-19 周五 身在红尘...

  • 种一棵树最好的时间是十年前,其次是现在

    2019-7-19 星期五,小雨转多云,24-29度,写作开始时间19:23 连续日更写作第91天,连续早打卡第8...

  • 致有长跑愿望却未成行的朋友们

    马春霞原创分享第140天 2019-7-19 今天晨跑,实在不在状态,从第一圈开始就想放弃,但想着自己的挑战目标,...

  • 拆书帮广州小蛮腰分舵早报Day141

    小蛮腰分舵早报(2019-7-19) 祝大家周五愉快,这是我们第141次早报 今天是会员故事板块,是我打算收集的1...

网友评论

      本文标题:2019-7-19

      本文链接:https://www.haomeiwen.com/subject/jraslctx.html