zoukankan      html  css  js  c++  java
  • java 集合 HashMap

    ashMap的存储接口是底层有1个Node<K,V>[] table数组,然后根据key的hash值找到定位的下标,然后存到数组里面。如何key的hash值是一样的,但是value不一样的话,他添加的节点就是Node链表的下一个节点。

    所以hashMap 查询和删除比较快,他直接根据key找到hash值,这边会根据hash值是去数组里面找,还是在node的链表里面找,所以一个hash算法很重要,如果hash算法不好的,导致链表很长的话,那么比较慢了。

    HashMap 把Node<K,V>[] table 加了transient ,这样让他不进行序列化这个参数,是因为他里面重写了readObject和writeObject。因为不同的jvm在实现hashcode不一样。因为HashMap的存储的位置是根据key的hash值存储的。所以重写了序列化的方法。

    这边HashMap new的时候可以带参数,这边设置Node的初始化容量的时候最好是2的幂方,如果不是的话,系统会自动帮你算出2的幂方。

    首先说下Map接口

    Map接口有1个内部接口Entry,这个接口有获取key的方法,获取value的方法等等。。

    HashMap 有1个内部类,Node,他实现了Entry这个接口,他是一个单向链表

    Node 实现

    循环

  • 相关阅读:
    爬虫大作业
    数据结构化与保存
    爬取校园新闻首页的新闻
    爬取校园新闻
    网络爬虫基础练习
    中文词频统计
    在线检测网页在各种浏览器的打开效果
    Tomcat内存设置详解
    as3.0 [Embed]标签嵌入外部资源
    Flex学习总结
  • 原文地址:https://www.cnblogs.com/tangwangming/p/8806428.html
Copyright © 2011-2022 走看看