zoukankan      html  css  js  c++  java
  • HashMap 原理一

    java 面试基本操作

    每次看过以后就忘了,总记不住,自己在这里总结记录一下;

    HashMap   基础掌握    (HashMap和 ArrayList比较常用,也比较好用)

    1、 key  value 存储

    2、线程不安全

    3、存储结构 数组+链表

    4、存储过程:将要存储的数据key值计算hashCode 值,然后利用hashCode 值对数组长度求余,

       这样就得到了,数组下标(也就是数据要存储的位置),然后查看当前数组下标位置是否有值

      无值;则存入即可

      有值:判断新对象key值,是否与已存在的对象key值相等(链表对象中的key值相等),相等的话则覆盖旧值,

        否则将当前数组存储对象(key ,value ,next)的地址存储到新的对象(next中),然后新对象地址覆盖数组内容,

        这样每次新的对象都是在在最前面的(null值key一直放在最前面)

    5、如果链表长度大于等于8时,转换成红黑树,提高查询效率

    问题来了:

    1、为什么会出现hashMap 这样的结构,其他ArrayList ,LinkList 不能替换使用吗

    2、红黑树为什么会提高效率,为什么不用其他的树

    3、HashMap线程不安全的话,如何解决这个问题

    4、HashMap 具体实现原理

  • 相关阅读:
    POJ Countries in War 3114
    POJ 2553 The Bottom of a Graph
    POJ 2762 Going from u to v or from v to u?(强联通 + TopSort)
    POJ 3180 The Cow Prom(强联通)
    HDU 4738 Caocao's Bridges
    喵哈哈村的几何大师╰☆莣メ誋こ月
    Vladik and Entertaining Flags
    XOR Queries
    Palindrome
    F
  • 原文地址:https://www.cnblogs.com/yutf/p/14247857.html
Copyright © 2011-2022 走看看