Java集合类
文章平均质量分 80
十二页
勤能补拙ing
展开
-
Java集合类框架学习 1 —— 概述与基础
Java集合类是Java基础中的重中之重,是每个合格的Java程序员都应该真正掌握的重要知识。关于这个本人准备根据之前的学习笔记,整理个几篇。至于网上有很多相关的文章,为什么还要自己写,主要有一下几个原因。1、认真学习:以前都是博客学习,自己看得不专业系统,这次认真地学习一个。2、跟上时代:网上各类博客资料很多都过时,通常是写的是jdk1.6的源码,经过这么多年了,jdk9都快出来了,集合原创 2017-02-11 14:29:20 · 761 阅读 · 0 评论 -
Java集合类框架学习 5.3—— ConcurrentHashMap(JDK1.8)
以下内容,如有问题,烦请指出,谢谢!现在看下1.8版本的ConcurrentHashMap,改动很大。目前本人也有些地方没有弄懂,具体来说就是扩容有关的那一块,有几个地方还不太对得上,单独理解是没问题的,联合起来发现存在些矛盾的地方。所以下面的扩容有关的,各位看官还是细看,自己也要想下。零、主要改动参照对象为jdk1.7的ConcurrentHashMap,当然,熟悉jdk1.原创 2017-03-05 22:41:40 · 10478 阅读 · 21 评论 -
Java集合类框架学习 4.3 —— HashMap(JDK1.8)
以下内容,如有问题,烦请指出,谢谢!这里看下1.8的HashMap,jdk1.8是个大改版,对于HashMap以及ConcurrentHashMap来说也是个很大的改版。零、主要改动相对于1.7:1、处理hash冲突的方式变化,当一条链表太长时,转化为红黑树保存,提高hash冲突时的查找速度,也就提升了几个主要的方法的速度。2、hashseed相关的都去原创 2017-03-03 21:56:33 · 1357 阅读 · 0 评论 -
Java集合类框架学习 4.2 —— HashMap(JDK1.7)
看完1.6的,接下来看下1.7的,改动并不多,稍微过下就行零、主要改动相对于1.6:1、懒初始化 lazy init,默认构造的HashMap底层数组并不会直接初始化,而是先使用空数组,等到实际要添加数据时再真正初始化。2、引入hashSeed,用于得到更好的hash值,以及在扩容时判断是否需要重新计算每个Entry的hash值(Entry的hash不再是final的,可以原创 2017-03-03 21:05:45 · 1053 阅读 · 1 评论 -
Java集合类框架学习 4.1 —— HashMap(JDK1.6)
这篇开始看HashMap,先从1.6的开始,它是基础。理解了1.6的之后,再看下1.7以及1.8的改进。public class HashMap extends AbstractMap implements Map, Cloneable, Serializable一、基本性质1、基于哈希表的Map接口实现,使用链地址法处理hash冲突。如果hash函数绝对随机均匀,那么基本操作原创 2017-03-03 16:16:06 · 976 阅读 · 1 评论 -
Java集合类框架学习 5.1 —— ConcurrentHashMap(JDK1.6)
以下内容,如有问题,烦请指出,谢谢!这一篇讲1.6的ConcurrentHashMapConcurrentHashMap是Java程序员接触得最多的有关并发和线程安全的类,它兼顾了并发的两个基本点——安全,高效,在很多地方都有用到,每一个Java程序员都应该真正掌握这个类。虽然1.6版本过了10年多了,现有的1.8跟1.6的差异很大。不过1.6的最适合用来学习,它实现得简单直接原创 2017-03-05 13:45:14 · 1875 阅读 · 2 评论 -
Java集合类框架学习 2 —— ArrayList(JDK1.8/JDK1.7/JDK1.6)
这一篇开始说ArrayList参考代码为jdk1.6_45 jdk1.7_80 jdk1.8_111中的源码,对比阅读,发现修改的问题以及改进点public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializable一、基本性质原创 2017-02-25 19:58:56 · 4325 阅读 · 4 评论 -
Java集合类框架学习 3 —— LinkedList(JDK1.8/JDK1.7/JDK1.6)
这篇简单看下LinkedList。代码基于jdk1.6_45 jdk1.7_80 jdk1.8_111,三个版本之间并没有什么特别大的改动或者改进。public class LinkedList extends AbstractSequentialList implements List, Deque, Cloneable, java.io.Serializable一、原创 2017-02-25 20:29:55 · 3420 阅读 · 2 评论 -
为什么HashMap继承了AbstractMap还要实现Map接口
jdk中HashMap的声明如下 public class HashMap extends AbstractMap implements Map, Cloneable, SerializableAbstractMap的声明如下 public abstract class AbstractMap implements Map这就让人很奇怪了,AbstractMap是实原创 2017-03-03 16:13:31 · 7230 阅读 · 3 评论 -
Java集合类框架学习 5.2 —— ConcurrentHashMap(JDK1.7)
以下内容,如有问题,烦请指出,谢谢!jdk1.7的ConcurrentHashMap整体设计、存储结构、思路,和1.6的基本一样,都是用代理给相应的Segment进行对应的操作。设计实现上一个比较大的改变就HashEntry的next指针不再是final的,改为volatile,并且用Unsafe提供的操作进行有序的延迟写入(lazySet)。理解1.7的代码,需要对sun.m原创 2017-03-05 17:22:40 · 942 阅读 · 1 评论