zoukankan      html  css  js  c++  java
  • 2021-01-18:java中,HashMap的创建流程是什么?

    福哥答案2021-01-18:

    jdk1.7创建流程:
    三种构造器。
    1.初始容量不能为负数,默认16。
    2.初始容量大于最大容量时,初始容量等于最大容量。
    3.负载因子必须大于0,默认0.75。
    4.根据初始容量算出容量,容量是2的n次幂。
    5.设置负载因子loadFactor 。
    6.设置容量极限threshold。
    7.设置table数组。实在抱歉,这个地方弄错了,没有第7步,2021-01-21修改。
    8.调用init()空方法。

    参数为集合的构造器。
    1.调用有两个参数的构造器。
    2.inflateTable方法。初始化table数组。
    3.putAllForCreate方法。遍历参数,放入当前map。

    jdk1.8创建流程:
    两种构造器。
    1.初始容量不能为负数,默认16。
    2.初始容量大于最大容量时,初始容量等于最大容量。
    3.负载因子必须大于0,默认0.75。
    4.设置负载因子loadFactor 。
    5.设置容量极限threshold,调用tableSizeFor方法,大于initialCapacity的最小的二次幂数值 。。

    无参构造器。
    1.只设置了负载因子,其他什么都没做。

    参数为集合的构造器。
    1.设置负载因子。
    2.putMapEntries方法。遍历参数,放入当前map。
    ***
    [HashMap源码分析(jdk7)](https://www.cnblogs.com/fsmly/p/11278561.html)
    [JDK1.8中的HashMap实现](https://www.cnblogs.com/doufuyu/p/10874689.html)
    [评论](https://user.qzone.qq.com/3182319461/blog/1610924590)

  • 相关阅读:
    【[USACO08FEB]酒店Hotel】
    【[USACO15JAN]草鉴定Grass Cownoisseur】
    【[USACO09DEC]牛收费路径Cow Toll Paths】
    【[HAOI2009]逆序对数列】
    【Hankson 的趣味题】
    【开车旅行】
    【[ZJOI2006]物流运输】
    【[HNOI2005]狡猾的商人】
    【愤怒的小鸟】
    【[HNOI2015]菜肴制作】
  • 原文地址:https://www.cnblogs.com/waitmoon/p/14295252.html
Copyright © 2011-2022 走看看