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 具体实现原理

  • 相关阅读:
    MySQL之字符集
    PHP7.0-PHP7.3新特性与变更
    MySQL之开发规范
    php框架之thinkphp
    MySQL之日期时间类型
    php扩展之Yar
    XAMPP支持多PHP版本
    MySQL之执行流程
    RabbitMQ之php-amqplib使用
    (转)YAML最最基础语法
  • 原文地址:https://www.cnblogs.com/yutf/p/14247857.html
Copyright © 2011-2022 走看看