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/

  • 相关阅读:
    iOS中Zbar二维码扫描的使用
    SOJ 1135. 飞跃原野
    SOJ 1048.Inverso
    SOJ 1219. 新红黑树
    SOJ 1171. The Game of Efil
    SOJ 1180. Pasting Strings
    1215. 脱离地牢
    1317. Sudoku
    SOJ 1119. Factstone Benchmark
    soj 1099. Packing Passengers
  • 原文地址:https://www.cnblogs.com/vhyc/p/9222393.html
Copyright © 2011-2022 走看看