zoukankan      html  css  js  c++  java
  • 集合:HashMap原理

    1、底层结构(数组、链表、红黑树)

    (1)底层结构:

     当桶的数量达到64,且链表的长度达到8时,链表结构将变为红黑树(jdk8)

    (2)红黑树

    解决链化(链表很长)问题,提高查找效率

    (3)hashmap扩容原理

    数组变长,链表变短(以空间换时间),提升查找效率

     (4)特点

    hashMap的初始容量(数组,即桶的个数)和加载因子会影响hashMap的性能,加载因子用于衡量哈希表的满的程度,因为桶太满的话查找的效率会降低,达到满的程度的时候就要扩容

     加载因子默认为0.75,数组长度的初始值为16

    2、map.put执行过程

    (1)执行过程

    (2)路由寻址:

     路由寻址公式:(table.length-1)&node.hash

    table.length:为2的n次方

    :3、put方法的返回值

    public class MyTest {
        public static void main(String[] args) throws IOException {
             HashMap<String,String> hashMap=new HashMap<>();
             hashMap.put("1","2");
             String value=hashMap.put("1","3");
             System.out.println(value);
        }
    }

    输出的结果是2不是3,执行的流程是3覆盖了2,但是返回的数值并不是新的值,而是以前的旧的value。

    4、执行流程

    (1)hashCode方法:

    public class MyTest {
        public static void main(String[] args) throws IOException {
             System.out.println("zhai".hashCode());
        }
    }
    3737558

    这个值是不能直接作为哈希表的下标的,因为哈希表的长度不会那么长。hash%table.length才是要查找的哈希表的下标

    (2)put操作:

  • 相关阅读:
    【大数据】中文词频统计
    【大数据】复合数据类型,英文词频统计
    Hadoop综合大作业
    分布式文件系统HDFS练习
    安装关系型数据库MySQL 安装大数据处理框架Hadoop
    爬取全部的校园新闻
    作业六|获取一篇新闻的全部信息
    理解爬虫原理
    作业——04 中文词频统计
    复合数据类型,英文词频统计
  • 原文地址:https://www.cnblogs.com/zhai1997/p/12677798.html
Copyright © 2011-2022 走看看