HashMap之扩容机制
摘要:首先要了解HashMap的扩容过程,我们就得了解一些HashMap中的变量: Node<K,V>:链表节点,包含了key、value、hash、next指针四个元素 table:Node<K,V>类型的数组,里面的元素是链表,用于存放HashMap元素的实体 size:记录了放入HashMap的元素
阅读全文
posted @
2020-03-23 18:12
一中晴哥威武
阅读(3520)
推荐(0) 编辑
ArrayList、LinkedList、Vector的区别。
摘要:1、 对于ArrayList与Vector来说,底层都是采用数组方式来实现的 2、 ArrayList,LinkedList是不同步的,即线程不安全,而Vector是的。(线程安不安全) 3、 LinkedList底层是由双向循环链表实现的 4、 对于ArrayList,查找速度非常快,增加和删除操
阅读全文
posted @
2019-03-22 16:19
一中晴哥威武
阅读(139)
推荐(0) 编辑
HashMap、LinkedHashMap、ConcurrentHashMap、ArrayList、LinkedList的底层实现
摘要:HashMap:底层是一个数组+链表实现 LinkedHashMap:底层是Hash表和链表的实现 ConcurrentHashMap:基于双数组和链表的Map接口的同步实现 ArrayList:底层都是采用数组方式来实现的 LinkedList:底层是由双向循环链表实现的
阅读全文
posted @
2019-03-22 16:13
一中晴哥威武
阅读(408)
推荐(0) 编辑
JDK7和JDK8concurrentHashmap区别
摘要:哈希表 1.介绍 哈希表就是一种以 键-值(key-indexed) 存储数据的结构,我们只要输入待查找的值即key,即可查找到其对应的值。 哈希的思路很简单,如果所有的键都是整数,那么就可以使用一个简单的无序数组来实现:将键作为索引,值即为其对应的值,这样就可以快速访问任意键的值。这是对于简单的键
阅读全文
posted @
2019-03-21 16:53
一中晴哥威武
阅读(3634)
推荐(0) 编辑
HashMap怎样解决碰撞问题
摘要:碰撞:HashMap运用put方法存储多个元素时,计算得出相同的hashCode,在put时出现冲突。 处理:利用“拉链法”处理HashCode的碰撞问题;当我们将键值对传递给put方法时,他调用键对象的hashCode()方法来计算hashCode,然后找到bucket(哈希桶)位置来存储对象;当
阅读全文
posted @
2019-01-10 16:19
一中晴哥威武
阅读(3235)
推荐(0) 编辑
HashMap.put()和get()原理
摘要:get:通过获取key的hashcode,然后调用 hash() 获得hash值,然后在“该hash值对应的链表”上查找“键值等于key”的元素。 put:通过获取key的hashcode,然后调用 hash() 获得hash值,然后将其添加到哈希值对应的链表中(如果key为null,则将该键值对存
阅读全文
posted @
2019-01-10 15:00
一中晴哥威武
阅读(451)
推荐(0) 编辑