zoukankan      html  css  js  c++  java
  • hashmap和hashtable

    1,hashtree的底层是红黑树,实现是键值对的排序,key必须实现Comparable接口(比如String就实现了)

    2,hashmap用要利用hashcode和equal两个函数,Object已经实现,可以重写(比如string),先用hashcode找到哈希表的哈希桶,如果hash值相同,再用equal函数比较

    3,hashmap可以运行键有一个null

    4,hashmap的node容量为16,每一个hash桶容量为8,满了8就由链表优化成树,时间复杂度由,log(n)-》log(1),自动扩容因子为0.75

    5,hashmap在并发下同时插入一个hashcode相同的值,或者扩容时候,后面的操作会覆盖前面的操作

    6,hashtable在put,get方法加了锁了

    7,

    ConcurrentHashMap

    ConcurrentHashMap引入segment的概念。Segment在实现上继承了ReentrantLock。
    Java8中摒弃了segment了,使用CAS的算法。

    SynchronizedMap

    Collections.getSynchronizedMap()返回一个SynchronizedMap()对象,使用synchronized关键字来保证对Map的操作是多线程安全的。

    效率

    ConcurrentHashMap > (SynchronizedMap or HashTable)

    入门:https://www.cnblogs.com/lchzls/p/6714689.html

    全面:https://yemengying.com/2016/05/07/threadsafe-hashmap/

  • 相关阅读:
    Elixir 简介
    docker 基础
    函数式和面向对象
    react-native 简介及环境
    Ecto 总结
    使用 dep 配置 golang 开发环境
    docker 私有仓库简易搭建
    Elixir 单元测试
    基于资源的权限系统-API设计
    差商代微商的方法求解一阶常微分方程
  • 原文地址:https://www.cnblogs.com/vhyc/p/9222393.html
Copyright © 2011-2022 走看看