hashmap 中的数组和链表 小弟在看hashmap的数据结构时 :有篇文章说他是有数组和链表组成的其中有一句话 “数组中的元素,它持有一个指向下一个元素的引用,这就构成了链表。”我还是不是很明白链表到底是啥样的?和数组怎么结合起来的啊。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 链表到底是啥样的?re:可以去看看数据结构链表和数组怎么结合起来的啊re:数组每个元素里存的是链表的表头,有了表头就可以遍历整个链表 hashMap的结构类似这样 元素0-->[hashCode=0, key.value=x1的数据] 元素1-->[hashCode=1, key.value=y1的数据] 元素n-->[hashCode=n, key.value=z1的数据]假设没有hashCode=1的元素加入,但是有两个hashCode=0的数据,它的结构就变成这样 元素0-->[hashCode=0, key.value=x1的数据].next-->[hashCode=0, key.value=x2的数据] 元素1-->[null] 元素n-->[hashCode=n, key.value=z1的数据]原因就是因为 hashCode 是个有限映射,可能存在key值不同,但是hashCode相同的数据,所以把他们穿成链表,保证用hashCode可以找得到 看一下hash表解决冲突的方案吧,这种方式叫chaining,把h(key)相同的元素都挂到一个链表上 HashMap底层就是一个数组,数组里面的元素都是Entry, Entry这个类有个成员变量就是Entry本身的引用,引用中又有自身的引用 …… 这样构成链 看看源码就明白了。 先谢谢楼上的几位大哥。这张图可以大体的解释怎么集合起来的吗?还有这位朋友 clariones 表头可以理解为 元素0-->[hashCode=0, key.value=x1的数据]他中的 hashcode=0 吗? IO流问题 字符串分割问题 如何将JOptionPane的对话框用JTextField代替?为什么总是报错?望改正我的代码 java入门 高手请教,在线等 String-Short类型转化问题 有关一个JAVA的IDE使用什么工具的问题? 【急急急】请求帮助.C语言和JAVA.关系毕业前途. 基础问题:关键字final的作用含义是什么,与static有何区别? 工科专业用什么语言或工具最好,我学的是电气工程及其自动化 请教一java基础问题,谢谢! java编译问题
re:可以去看看数据结构链表和数组怎么结合起来的啊
re:数组每个元素里存的是链表的表头,有了表头就可以遍历整个链表
元素0-->[hashCode=0, key.value=x1的数据]
元素1-->[hashCode=1, key.value=y1的数据]
元素n-->[hashCode=n, key.value=z1的数据]假设没有hashCode=1的元素加入,但是有两个hashCode=0的数据,它的结构就变成这样
元素0-->[hashCode=0, key.value=x1的数据].next-->[hashCode=0, key.value=x2的数据]
元素1-->[null]
元素n-->[hashCode=n, key.value=z1的数据]原因就是因为 hashCode 是个有限映射,可能存在key值不同,但是hashCode相同的数据,所以把他们穿成链表,保证用hashCode可以找得到
这张图可以大体的解释怎么集合起来的吗?
还有这位朋友 clariones 表头可以理解为
元素0-->[hashCode=0, key.value=x1的数据]
他中的 hashcode=0 吗?