
java基础-----集合
文章平均质量分 86
程序中的MKS
这个作者很懒,什么都没留下…
展开
-
Java集合---ArrayList底层原理
目录: 一、 ArrayList概述 二、 ArrayList的实现 1) 私有属性 2) 构造方法 3) 元素存储 4) 元素读取 5) 元素删除 6) 调整数组容量 7...原创 2018-02-08 17:27:57 · 287 阅读 · 0 评论 -
Java集合---HashTable底层原理
有两个类都提供了一个多种用途的hashTable机制,他们都可以将可以key和value结合起来构成键值对通过put(key,value)方法保存起来,然后通过get(key)方法获取相对应的value值。一个是前面提到的HashMap,还有一个就是马上要讲解的HashTable。对于HashTable而言,它在很大程度上和HashMap的实现差不多,如果我们对HashMap比较了解的话,对Has...原创 2018-02-08 17:34:37 · 750 阅读 · 1 评论 -
Java集合---HashTable源码剖析
Hashtable 概要与HashMap主要区别是Hashtable的put,get方法都是同步的,线程安全,但是性能较差 key和value都不能为null,HashMap中key与value都可以为 null 与HashMap类似,key必须实现hashCode()和equals方法,由于equals判断前都会先判断hashCode方法是否相等,两个equals的对象的hashCode()必须...原创 2018-02-08 17:35:01 · 233 阅读 · 0 评论 -
Java集合---Hash概念
哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出现在各类的面试题中,重要性可见一斑。本文会对java集合框架中的对应实现HashMap的实现原理进行讲解,然后会对JDK7的HashMap源码进行分析。目录一、什么是哈希表 二、HashMap实现...原创 2018-02-08 17:35:23 · 384 阅读 · 0 评论 -
Java集合---LinkedHashMap实现原理
LinkedHashMap 的实现原理LinkedHashMap 概述HashMap 是无序的,HashMap 在 put 的时候是根据 key 的 hashcode 进行 hash 然后放入对应的地方。所以在按照一定顺序 put 进 HashMap 中,然后遍历出 HashMap 的顺序跟 put 的顺序不同(除非在 put 的时候 key 已经按照 hashcode 排序号了,这种几率非常小)...原创 2018-02-08 17:35:42 · 224 阅读 · 0 评论 -
Java集合---LinkedHashSet实现原理
LinkedHashSet 的实现原理LinkedHashSet 概述思考了好久,到底要不要总结 LinkedHashSet 的内容 = = 我在之前的博文中,分别写了 HashMap 和 HashSet,然后我们可以看到 HashSet 的方法基本上都是基于 HashMap 来实现的,说白了,HashSet内部的数据结构就是一个 HashMap,其方法的内部几乎就是在调用 HashMap 的方法...原创 2018-02-08 17:36:01 · 315 阅读 · 0 评论 -
Java集合---LinkedList底层原理
java中的LinkedList类实现了List接口和Deque接口,是一种链表类型的数据结构,支持高效的插入和删除操作,同时也实现了Deque接口,使得LinkedList类也具有队列的特性。LinkedList类的底层实现的数据结构是一个双端的链表。 LinkedList类中有一个内部私有类Node,这个类就代表双端链表的节点Node。这个类有三个属性,分别是前驱节点,本节点的值,后继结点。源...原创 2018-02-08 17:36:26 · 682 阅读 · 0 评论 -
Java集合---LinkedList源码解析
一、源码解析1、 LinkedList类定义2、LinkedList数据结构原理3、私有属性4、构造方法5、元素添加add()及原理6、删除数据remove()7、数据获取get()8、数据复制clone()与toArray()9、遍历数据:Iterator()二、ListItr 一、源码解析 1、 LinkedList类定义。 publicclassLinkedList<E>...原创 2018-02-08 17:36:49 · 187 阅读 · 0 评论 -
Java集合---多线程环境下hashmap死循环
为何出现死循环?大家都知道,HashMap采用链表解决Hash冲突,具体的HashMap的分析可以参考一下Java集合---HashMap源码剖析 的分析。因为是链表结构,那么就很容易形成闭合的链路,这样在循环的时候只要有线程对这个HashMap进行get操作就会产生死循环。但是,我好奇的是,这种闭合的链路是如何形成的呢。在单线程情况下,只有一个线程对HashMap的数据结构进行操作,是不可能产生...原创 2018-02-08 17:37:15 · 322 阅读 · 0 评论 -
Java集合---HashSet源码剖析
一、 HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。 二、 HashSet的实现: 对于HashSet而言,它是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,因此HashSet 的实现比较简单,相关HashSet的操作...原创 2018-02-08 17:34:13 · 194 阅读 · 0 评论 -
Java集合---HashSet的实现原理
1. HashSet概述 HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。2. HashSet的实现 如果不等,则添加到该数组索引对应的链表中。---------------------------------------------------------------...原创 2018-02-08 17:33:51 · 354 阅读 · 0 评论 -
Java集合---ArrayList源码剖析
ArrayList就是传说中的动态数组,就是Array的复杂版本,它提供了如下一些好处:动态的增加和减少元素、灵活的设置数组的大小...... 认真阅读本文,我相信一定会对你有帮助。比如为什么ArrayList里面提供了一个受保护的removeRange方法?提供了其他没有被调用过的私有方法? 首先看到对ArrayList的定义:[java] view plain copy1. p...原创 2018-02-08 17:28:53 · 244 阅读 · 0 评论 -
Java集合---Arrays类源码剖析
一、Arrays.sort()数组排序Java Arrays中提供了对所有类型的排序。其中主要分为Primitive(8种基本类型)和Object两大类。 基本类型:采用调优的快速排序; 对象类型:采用改进的归并排序。 1、对于基本类型源码分析如下(以int[]为例):Java对Primitive(int,float等原型数据)数组采用快速排序,对Object对象数组采用归并排序。对这一区别,...原创 2018-02-08 17:29:24 · 195 阅读 · 0 评论 -
Java集合---ConcurrentHashMap实现原理
ConcurrentHashMap 的实现原理概述我们在之前的博文中了解到关于 HashMap 和 Hashtable 这两种集合。其中 HashMap 是非线程安全的,当我们只有一个线程在使用 HashMap 的时候,自然不会有问题,但如果涉及到多个线程,并且有读有写的过程中,HashMap 就不能满足我们的需要了(fail-fast)。在不考虑性能问题的时候,我们的解决方案有 Hashtabl...原创 2018-02-08 17:29:56 · 200 阅读 · 0 评论 -
Java集合---HashCode的作用原理和实例解析
HashCode定义 (1)HashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,HashCode是用来在散列存储结构中确定对象的存储地址的;(2)如果两个对象相同, equals方法一定返回true,并且这两个对象的HashCode一定相同;(3)如果对象的equals方法被重写,那么对象的HashCode也尽量重写,并且产生HashCode使用的对象,一定要和e...原创 2018-02-08 17:30:19 · 239 阅读 · 0 评论 -
Java集合---HashMap的实现原理
1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 2. HashMap的数据结构: 在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不...原创 2018-02-08 17:30:42 · 165 阅读 · 0 评论 -
Java集合---HashMap与HashSet比较
HashSet 和 HashMap 的比较HashMap 和 HashSet 都是 collection 框架的一部分,它们让我们能够使用对象的集合。collection 框架有自己的接口和实现,主要分为 Set 接口,List 接口和 Queue 接口。它们有各自的特点,Set 的集合里不允许对象有重复的值,List 允许有重复,它对集合中的对象进行索引,Queue 的工作原理是 FCFS 算法...原创 2018-02-08 17:31:05 · 204 阅读 · 0 评论 -
Java集合---HashMap与HashSet比较
HashSet 和 HashMap 的比较HashMap 和 HashSet 都是 collection 框架的一部分,它们让我们能够使用对象的集合。collection 框架有自己的接口和实现,主要分为 Set 接口,List 接口和 Queue 接口。它们有各自的特点,Set 的集合里不允许对象有重复的值,List 允许有重复,它对集合中的对象进行索引,Queue 的工作原理是 FCFS 算法...原创 2018-02-08 17:32:29 · 443 阅读 · 0 评论 -
Java集合---HashMap源码剖析
一、HashMap概述二、HashMap的数据结构三、HashMap源码分析 1、关键属性 2、构造方法 3、存储数据 4、调整大小 5、数据读取 6、HashMap的性能参数 7、Fail-Fast机制 一、HashMap概述HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用...原创 2018-02-08 17:33:20 · 183 阅读 · 0 评论 -
Java集合---面试题
HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中,甚至会要求你实现HashMap来考察你的编程能力。ConcurrentHashMap和其它同步集合的引入让这道题变得更加复杂。让我...原创 2018-02-08 17:37:36 · 233 阅读 · 0 评论