zoukankan      html  css  js  c++  java
  • HashMap、HashTable

    HashMap

    初始长度:1>>4   2^4=16

    最大长度:1>>30   2^30

    扩容时机:容量 >= 0.75f  

    扩容倍数:2倍

    1.K可以为null

    2.put(K,V)的时候,K重复了,V会被覆盖;put成功返回null,K有重复返回原来的V

    3.可将hashmap分成两部分来看待,hash和map。map只是实现了键值对的存储,而其整个O(1)的查找复杂度很大程度上是由hash来保证的。

    put发生扩容:

    jdk1.7:对链进行遍历,数组中的索引位置,index是 keyHash 与 (table.length-1)进行让位 & 操作,存在线程安全问题

    jdk1.8:keyHash与 oldTable.length 进行让位 & 操作,不存在线程安全问题

    HashTable

    初始长度:11  

    最大长度:1>>30   2^30

    扩容时机:容量 >= 0.75f  

    扩容倍数:2倍+1

    不同:HashTable是synchronized的;不接收K或V为null;迭代器不同;继承的类不同;有contains方法,比较的是V,HashMap只有containsKey、containsValue方法

  • 相关阅读:
    flask+Gunicorn+nginx部署
    配置Django实现数据库读写分离
    mysql分库分表
    python的反射
    flask-restful的使用
    spring源码(4)
    spring源码(3)
    spring源码(2)
    spring源码(1)
    tomcat8.5 配置数据源
  • 原文地址:https://www.cnblogs.com/jhin-wxy/p/9026239.html
Copyright © 2011-2022 走看看