
JDK源码
文章平均质量分 79
xuhuaabc
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
HashMap和Hashtable的区别
HashMap和Hashtable的区别一、HashMap简介HashMap是在JDK1.2中引入的Map的实现类。1.HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长。 2. HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurren...原创 2019-06-12 22:23:34 · 154598 阅读 · 15 评论 -
equals()方法和hashcode()方法!
为什么要重写equals和hashcode?记住:Object类中的equals方法默认比较的是对象的地址,因为只有是相同的地址才会相等(x == y),如果没有重写equals方法,那么默认就是比较的是地址。而无论何时如果equals方法被重写那么都是有必要去重写hashCode方法,这个是因为为了维持hashCode的一般约定(general contract),相同的对象必须要有相同的...原创 2019-06-13 19:36:30 · 182 阅读 · 0 评论 -
TreeMap源码分析!
1.TreeMap的继承关系继承了AbstractMap抽象类,实现了Map接口;public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>, Cloneable, java.io.SerializableNavigableMap继承了SortedMap类...原创 2019-06-13 22:24:27 · 538 阅读 · 1 评论 -
HashMap源码分析(JDK1.8)
1.概述本篇文章我们来聊聊大家日常开发中常用的一个集合类 - HashMap。HashMap 最早出现在 JDK 1.2中,底层基于散列算法实现。HashMap 允许 null 键和 null 值,在计算哈键的哈希值时,null 键哈希值为 0。HashMap 并不保证键值对的顺序,这意味着在进行某些操作后,键值对的顺序可能会发生变化。另外,需要注意的是,HashMap 是非线程安全类,在多线程...转载 2019-06-09 22:04:28 · 320 阅读 · 0 评论 -
ConcurrentHashMap源码解读!
1 .首先先看看为什么要使用ConcurrentHashMap!首先,ConcurrentHashMap是JDK5中引用的一个线程安全的支持高并发的HashMap集合类。它是弥补了HashMap和HashTable的不足而设计的;1.HashMap是非线程安全的,在多线程操作环境下,使用Hashmap进行put操作可能会引起死循环,导致CPU利用率接近100%,所以在并发情况下一般不使用Has...原创 2019-06-15 21:58:54 · 702 阅读 · 0 评论 -
ArrayList源码解析!
1.看它的继承与实现接口public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable图片参考别人的:https://www.cnblogs.com/ysocean/p/86...原创 2019-06-16 21:05:36 · 151 阅读 · 0 评论 -
在List和Map集合中遇到的fail-fast机制问题!
在看源码的过程中,HashMap和ArrayList都遇到了所谓的fail-fast机制(快速失败机制)(应该是因为这两个都是非线程安全的集合?);简介:fail-fast 机制,即快速失败机制,是java集合(Collection)中的一种错误检测机制。当在迭代集合的过程中该集合在结构上发生改变的时候,就有可能会发生fail-fast,即抛出ConcurrentModificationExc...转载 2019-06-16 21:20:46 · 261 阅读 · 0 评论 -
LinkedList源码解析(JDK1.8)!
1.linkedlist简介①. 其底层采用的双向链表结构。② ArrayList 一样,LinkedList 也支持空值和重复值。由于 LinkedList 基于链表实现,存储元素过程中,无需像 ArrayList 那样进行扩容。但有得必有失,LinkedList 存储元素的节点需要额外的空间存储前驱和后继的引用。另一方面,LinkedList 在链表头部和尾部插入效率比较高,但在指定位置进...原创 2019-06-16 22:24:59 · 257 阅读 · 0 评论 -
Hashtable源码分析(基于JDK1.8)
Hashtable 简介Hashtable 存储的内容是键值对(key-value)映射,其底层实现是一个Entry数组+链表。Hashtable是线程安全的它的key、value都不可以为null。此外,Hashtable中的映射不是有序的。且Hashtable大部分方法是用synchronized修饰,证明Hashtable是线程安全的。Hashtable的继承结构public cla...原创 2019-06-11 22:06:10 · 295 阅读 · 0 评论