Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1063|回复: 0
打印 上一主题 下一主题

Java源码分析

[复制链接]

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
跳转到指定楼层
楼主
发表于 2019-1-21 17:38:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
HashMap(1.8)设计思想分析

HashMap 是什么 ?  至少用来存储数据的 key,value键值对
如果计算机想要存储数据 数据的一种存储方式 
数据结构:数组, 链表, 树形, 图形
惰性:数据,链表  对应 ArrayList  LinkedList
验证 java 类 真的对应数据结构
图解:数组,链表 整体的感受
java代码
class Node{
        data;
        Node next;
        Node previous;
}

HashMap数据结构
数组+链表 ->结合两者优点



对key进行hash,hash冲突后内部使用链表,链表数量过大时,把链表转成红黑树,数量降下来后,再转会链表

Node节点 随机性 落点

16
(1)整数
(2)0-15
key value Rendom.nextInt(15) 不靠谱
key.hashCode  32455 越界
整数%16

hash(key){
        int hash = key.hashCode
        hash%16
}

得到Node节点的位置 如果位置原来有值,则往下顺延
Node要到哪里去 自己要知道


2倍扩容  原来的要打散重新分配





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-4-27 07:57 , Processed in 0.058955 second(s), 22 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表