E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
Java集合源码
Java集合源码
分析之LinkedList
分析完了List与Queue之后,终于可以看看LinkedList的实现了。LinkedList弥补了ArrayList增删较慢的问题,但在查找方面又逊色于ArrayList,所以在使用时需要根据场景灵活选择。对于这两个频繁使用的集合类,掌握它们的源码并正确使用,可以让我们的代码更高效。LinkedList既实现了List,又实现了Deque,前者使它能够像使用ArrayList一样使用,后者又使
大大纸飞机
·
2020-03-25 10:23
Java集合源码
详解之ArrayList
既然是看源码,那我们要怎么看一个类的源码呢?这里我推荐的方法是:1)看继承结构看这个类的层次结构,处于一个什么位置,可以在自己心里有个大概的了解。2)看构造方法在构造方法中,看做了哪些事情,跟踪方法中里面的方法。3)看常用的方法跟构造方法一样,这个方法实现功能是如何实现的注:既然是源码,为什么要这样设计类,有这样的继承关系。这就要说到设计模式的问题了。所以我们要了解常用的设计模式,才能更深刻的去理
JourWon
·
2020-03-21 16:28
Java集合源码
学习—ArrayList
又是热爱学习的一天…今天准备学习一下ArrayList的源码,研究它都干了什么。总结(先看结论,再寻找如何得出的此结论)ArrayList是一种以数组实现的List,与数组相比,它具有动态扩展的能力,因此也可称之为动态数组。ArrayList实现了List,提供了基础的添加、删除、遍历等操作。ArrayList实现了RandomAccess,提供了随机访问的能力。ArrayList实现了Clone
江湖人称小程
·
2020-03-16 16:24
Java
java
arraylist
源码
扩容
Java集合源码
分析之Queue(三):ArrayDeque
在介绍了Queue与Deque概念之后,这是要进行分析的第一个实现类。ArrayDeque可能大家用的都比较少,但其实现里有许多亮点还是值得我们关注的。Deque的定义为doubleendedqueue,也就是允许在两侧进行插入和删除等操作的队列。这个定义看起来很简单,那么我们怎么实现它呢?我们最容易想到的就是使用双向链表。我们在前文介绍过单链表,其每个数据单元都包含一个数据元素和一个指向下一个元
大大纸飞机
·
2020-03-08 00:54
Java集合源码
分析之基础(五):平衡二叉树(AVL Tree)
二叉排序树很好的平衡了插入与查找的效率,但不平衡的二叉排序树效率大打折扣。今天介绍的AVL树就是一种解决此问题的方案。定义平衡二叉树(Self-BalancingBinarySearchTree或Height-BalancedBinarySearchTree),是一种二叉排序树,其中每一个节点的左子树和右子树的高度差至多等于1。它是一种高度平衡的二叉排序树。意思是说,要么它是一棵空树,要么它的左子
大大纸飞机
·
2020-02-27 11:56
Java集合-ArrayDeque源码深入浅出分析
概要最近持续阅读
Java集合源码
实现,学习,写文章,分析,画图,感觉写技术文章是个很有难度的活。
Misout
·
2020-02-27 09:48
Java集合源码
分析之Queue(二):接口Deque
Deque全称为doubleendedqueue,即双向队列,它允许在两侧插入或删除元素,同时也建议我们不要向其中插入null值。除此之外,其余特性则和父级Queue类似。Deque大多数情况下不会限制元素的数量,但这不是必须的。Deque中定义的方法主要分为四部分,第一部分就如Deque定义所言,提供两侧插入或删除的方法。第二部分是继承自Queue的实现。第三部分表示如果要基于此实现一个Stac
大大纸飞机
·
2020-02-26 03:20
Java集合源码
分析之Queue(一):超级接口Queue
在日常生活中,排队几乎随处可见,上地铁要排队,买火车票要排队,就连出门吃个大餐,也要排队。。。之前研究的ArrayList就像是一个缺乏管理的排队系统。大家虽然会排队,但一会走个人,大家向前挪一挪,一会插个人,大家向后挪一挪,碰到这样的队伍,一定让人痛苦万分吧?今天要介绍的Queue就不同了,它是一个严格的排队系统。就像许多火车站排队窗口在两侧加了护栏一样,大家只能从队尾进来,从队首离开,我们称之
大大纸飞机
·
2020-02-25 10:39
Java集合源码
分析之基础(六):红黑树(RB Tree)
红黑树和AVL树的思想是类似的,都是在插入过程中对二叉排序树进行调整,从而提升性能,它的增删改查均可以在O(lgn)内完成。本文会从定义到实现一棵红黑树展开,还会简单介绍其与AVL树的异同。定义红黑树是一棵二叉排序树。且满足以下特点:每个节点或者是黑色,或者是红色。根节点是黑色。每个叶子节点(NIL)是黑色。[注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!]如果一个节点是红色的,则它
大大纸飞机
·
2020-02-25 01:39
Java集合源码
分析之Iterable概述
前言当我们想要遍历集合时,Java为我们提供了多种选择,通常有以下三种写法:写法1:for循环for(inti=0,len=strings.size();iiterator();也就是说,如果想让一个Java对象支持foreach,只要实现Iterable接口,然后就可以像集合那样,通过Iteratoriterator=strings.iterator()方式,或者使用foreach,进行遍历了。
大大纸飞机
·
2020-02-20 19:03
Java集合源码
分析之List(二):ArrayList
做了这么多准备,终于到了ArrayList了,ArrayList是我们使用最为频繁的集合类了,我们先看看文档是如何介绍它的:Resizable-arrayimplementationoftheListinterface.Implementsalloptionallistoperations,andpermitsallelements,includingnull.Inadditiontoimplem
大大纸飞机
·
2020-02-15 08:31
Java集合源码
分析之List(一):超级接口List
List是Collection三大直接子接口之一,其中的数据可以通过位置检索,用户可以在指定位置插入数据。List的数据可以为空,可以重复。以下是其文档注释,只看前两段:Anorderedcollection(alsoknownasasequence).Theuserofthisinterfacehasprecisecontroloverwhereinthelisteachelementisins
大大纸飞机
·
2020-02-12 06:53
java集合源码
分析(四)HashMap
本文从Hash方法开始,通过分析源码,深入介绍了JDK不同版本中HashMap的实现。HashMap简介HashMap主要用来存放键值对,它基于哈希表的Map接口实现,是常用的Java集合之一。JDK1.8之前HashMap由数组+链表组成的,数组是HashMap的主体,链表则是主要为了解决哈希冲突而存在的(“拉链法”解决冲突).JDK1.8以后在解决哈希冲突时有了较大的变化,当链表长度大于阈值(
爱情小傻蛋
·
2020-02-10 21:09
Java集合源码
分析之超级接口:Collection
CollectionCollection是List、Queue和Set的超集,它直接继承于Iterable,也就是所有的Collection集合类都支持for-each循环。除此之外,Collection也是面向接口编程的典范,通过它可以在多种实现类间转换,这也是面向对象编程的魅力之一。方法定义在阅读源码前,我们可以先自行想象一下,如果我们想封装下数组或链表以方便操作,我们需要封装哪些功能呢?比如
大大纸飞机
·
2020-02-10 00:56
平安金融科技移动技术周报(第二十八期)
平安金融科技移动技术周报(第二十八期)@authorASCE1885的Github微博CSDN知乎tech.jpeg-385.8kB本期导读:本期原创专题带来
Java集合源码
的分析以及ReactNative
asce1885
·
2020-01-08 09:23
整理
技能图谱学习路线BAT大厂Android面试知识点,请客官拿好1、JAVA基础泛型深入理解泛型java泛型详解-绝对是对泛型方法讲解最详细的,没有之一反射Java基础之—反射(非常重要)深入理解Java反射集合
Java
瓦雷
·
2020-01-08 05:17
Java集合源码
分析之HashMap
前言HashMap可以说是我们日常开发中特别经常使用到的对象映射关系集合类了,本文将结合JDK1.8源码从线程安全、数据结构、初始化、扩容、增删改查、特性总结等几个部分去分析HashMap线程安全HashMap是非线程安全的,不支持并发。我们可以从它的数据迭代器中可以得知,当产生线程安全问题时会抛出抛出ConcurrentModificationException异常。内部是通过一个modCoun
小甜李子
·
2020-01-04 18:39
Java集合源码
分析之ArrayList
前言ArrayList可以说是我们日常开发中特别经常使用到的集合类了,本文将结合JDK1.8源码从线程安全、数据结构、初始化、扩容、增删改查、特性总结等几个部分去分析ArrayList线程安全ArrayList是非线程安全的,不支持并发。我们可以从它的数据迭代器ArrayList$Itr中可以得知,当产生线程安全问题时会抛出抛出ConcurrentModificationException异常。内
小甜李子
·
2020-01-02 19:58
Java集合源码
分析之LinkedHashMap
前言今天写一下经常拿来与HashMap对比的LinkedHashMap源码分析。那么LinkedHashMap存在的意义在哪?我们从HashMap文章里可以知道HashMap是无序的,而LinkedHashMap正是为了解决这一问题的。LinkedHashMap是继承自HashMap,因此HashMap的相关操作其实在HashMap中都已经实现了。它对于HashMap的扩展主要是其内部还维护了一个
小甜李子
·
2019-12-30 00:41
Java集合源码
详解之HashMap
简介在JDK1.8之前,HashMap采用数组+链表实现,即使用链表处理冲突,同一hash值的节点都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,为了解决hash碰撞过于频繁的问题,HashMap采用数组+链表+红黑树实现,当链表长度超过阈值(8)时,将链表(查询时间复杂度为O(n))转换为红黑树(时间复杂度为O(l
JourWon
·
2019-12-21 03:02
Java集合源码
分析之开篇
初衷Java集合是我们使用最频繁的工具,也是面试的热点,但我们对它的理解仅限于使用上,而且大多数情况没有考虑过其使用规范。本系列文章将跟随源码的思路,分析实现的每个细节,以期在使用时避免各种不规范的坑。在这里,我们会惊艳于开发者优秀的设计,也会感激先辈们付出的艰辛努力,更重要的是知其所以然,少犯错误,写出优秀的代码。许多人对集合类的理解是暴力的,当需要保存对象时就使用ArrayList,当需要保存
大大纸飞机
·
2019-12-15 16:02
Java集合源码
分析之LinkedList
前言LinkedList相对ArrayList来说可以使用频率可能相对较低,但是对于不同需求到情况下我们需要能够选择合适的集合,本文将结合JDK1.8源码从线程安全、数据结构、初始化、增删改查、特性总结等几个部分去分析LinkedList线程安全ArrayList是非线程安全的,不支持并发。我们可以从它的数据迭代器ArrayList$Itr中可以得知,当产生线程安全问题时会抛出抛出Concurre
小甜李子
·
2019-12-15 07:35
【
Java集合源码
剖析1.2】LinkedList源码剖析(API23)
序首先LinkedList也是非线程安全的,与ArrayList不同的是内部实现方式不同,所以,两者在不同的情况下,效率也可能不同。本文参考了(http://www.cnblogs.com/xrq730/p/5005347.html)。LinkedList既然是一种双向链表,必然有一个存储单元,看一下LinkedList的基本存储单元,它是LinkedList中的一个内部类:privatestat
MrLuo
·
2019-12-08 11:46
Java 学习资料整理
集合框架部分
Java集合源码
解析系列个人感觉这个博主对Java集合部分的源码进行了深入阅读,可以参考
Java集合源码
解析(1):Iterator
Java集合源码
解析(2):ListIterator但是看了一下
熊熊要更努力
·
2019-12-07 00:24
Java面试题
Java面试题
Java集合源码
分析https://www.cnblogs.com/joemsu/p/7667509.htmlArrayList内部数组:Object[]elementData;默认大小10
xiaogmail
·
2019-11-28 08:52
Queue与Deque的区别
前言在研究
java集合源码
的时候,发现了一个很少用但是很有趣的点:Queue以及Deque,平常在写leetcode经常用LinkedList向上转型Deque作为栈或者队列使用,但是一直都不知道Queue
cartoon
·
2019-09-30 00:24
java
Queue与Deque的区别
前言在研究
java集合源码
的时候,发现了一个很少用但是很有趣的点:Queue以及Deque,平常在写leetcode经常用LinkedList向上转型Deque作为栈或者队列使用,但是一直都不知道Queue
cartoony
·
2019-09-29 22:48
java
Java集合源码
全面分析
Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组、链表、栈、队列、集合、哈希表等。学习Java集合框架下大致可以分为如下五个部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具类(Arrays、Collections)。从上图中可以看出,集合类主要分为两大类:Collection和Map。Collection是List、
·
2019-09-24 03:03
java集合源码
分析
List,Set,Map都是接口,前两个继承Collection接口,Map为独立接口Set的实现由HashSet,LinkedHashSet,TreeSetList下有ArrayList,Vector,LinkedListMap下有Hashtable,LinkedHashMap,HashMap,TreeMapCollection还有Queue接口,实现有PriorityQueueArrayLis
mufeng07
·
2019-09-03 17:36
java
集合
java源码分析
Java集合源码
分析(一)——ArrayList源码分析
一、如何看源码:看数据结构:底层数据结构看继承结构:类的层次结构,处于一个什么样的位置看构造方法:看看做了哪些事,跟踪方法里面的方法看常用的方法:与构造方法类型,看看该方法是如何实现的二、ArrayList源码分析:1、数据结构:ArrayList是基于数组,数组元素类型为Object,即可以存放所有类型的数据2、继承结构:问题1:为什么要用AbstractList实现List,然后ArrayLi
buer219
·
2019-07-16 20:36
Java学习之路——
Java集合源码
分析(二)
Map我们先看一下官方的注释:Anobjectthatmapskeystovalues.Amapcannotcontainduplicatekeys;*eachkeycanmaptoatmostonevalue.简单解释一下:将键映射到值上,Map不能包含重复的键,每个键最多只能映射一个值。Map是Map家族的顶层接口,它规范了作为Map家族的基本方法Map与List,与Set不同,它没有父接口,
问荆_
·
2019-06-04 18:02
Java集合源码
分析之基础(五):平衡二叉树(AVL Tree)
二叉排序树很好的平衡了插入与查找的效率,但不平衡的二叉排序树效率大打折扣。今天介绍的AVL树就是一种解决此问题的方案。定义平衡二叉树(Self-BalancingBinarySearchTree或Height-BalancedBinarySearchTree),是一种二叉排序树,其中每一个节点的左子树和右子树的高度差至多等于1。它是一种高度平衡的二叉排序树。意思是说,要么它是一棵空树,要么它的左子
刀哥谈Java
·
2019-05-30 11:46
源码
Java集合源码
分析之基础(四):二叉排序树
解决查询速度慢的方案除了哈希表外,还可以使用二叉排序树。我们知道,查询慢主要是因为不知道元素的位置,使用hash函数映射虽然解决了问题,但其并不稳定,当出现大量的哈希碰撞后其表现更像一个链表,查询速度大大降低。二叉排序树的方案则是使元素有序,这样便可以使用二分法进行查找了,虽然效率相比hash函数低一些,但可以通过AVL树、红黑树等增加稳定性。HashMap在JDK1.8的实现中,就结合了哈希表的
刀哥谈Java
·
2019-05-30 11:06
源码
Java集合源码
分析之基础(三):树与二叉树
数组和链表都是用来解决一对一问题的,而一对多问题则需要树来解决。这里,我们重点关注二叉排序树,所以只会介绍一些必需了解的概念,关于树的更多知识,大家可以查看相关书籍进行系统的学习。树的定义树(Tree)是n(n≥0)个结点的有限集。n=0时称为空树。在任意一棵非空树中:1.有且仅有一个特定的称为根(Root)的结点;2.当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、……、Tm
刀哥谈Java
·
2019-05-30 11:44
源码
Java集合源码
分析之基础(二):哈希表
无论是数组还是链表,其对数据的查询表现都比较无力,要想知道一个元素是否在数组或链表中,只能从前向后挨个对比。出现这个问题的根源在于,我们没有办法直接根据一个元素找到它存储的位置,那有没有办法消除这个对比的过程呢?哈希表就是解决查询问题的一种方案。在后续将会分析的二叉排序树中,还会将数据排序以进行二分查找,将时间复杂度从O(n)降低到O(lgn)。哈希表与Hash函数通俗来讲,哈希表就是通过关键字来
刀哥谈Java
·
2019-05-30 11:33
源码
Java集合源码
分析之基础(一):数组与链表
数组和链表是数据结构中最基本的部分,也是其余众多数据结构的基础。即使在Java中,这两种结构使用的也很普遍。这里我们会先对它们进行简要分析。数组在java中,数组定义为一种基本类型,其可以通过下标获取到对应位置的数据。那么这种结构的数据,在内存中是怎么存放的呢?数组的结构示意图正如上图所示,数组在内存中是一段连续的存储单元,每个数据依次放在每个单元中。分析这种结构,我们可以得出以下几个结论:创建一
刀哥谈Java
·
2019-05-30 11:19
源码
java集合源码
分析文章合集
【Java源码分析】LinkedList类源码级强力分析hadoop的RPC机制Java线程池源码分析java并发(concurrent)包源码分析Java源码——HashMap的源码分析及原理学习记录JavaHashMap源码分析Java工具类——HashMap源码分析Java容器源码分析之1.7HashMapJava8中的ConcurrentHashMap源码分析java.util.BitSe
passiontim
·
2019-04-23 23:46
Java集合源码
分析-WeakHashMap
这是分析Java的map类集合的最后一篇文章了,写完这一篇打算分析java.util.concurrent包下的并发集合源码。《淮南子•缪称训》:“欲知天道,察其数;欲行地道,物其树;欲知人道,从其欲”,所以想要清楚WeakHashMap的底层原理,首先要知道WeakHashMap上层应用的具体表现,如果都不知道WeakHashMap的上层表现,探究其实现原理还是需要点天赋的。举个例子:publi
宛丘之上兮
·
2019-03-12 11:37
java集合源码
分析-手写arrayList集合框架
一:简述List集合代表一个有序集合,集合中每个元素都有其对应的顺序索引。List集合允许使用重复元素,可以通过索引来访问指定位置的集合元素。List接口继承于Collection接口,它可以定义一个允许重复的有序集合。因为List中的元素是有序的,所以我们可以通过使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组。List接口为Collection直
调皮的大脸猫
·
2019-01-23 11:02
【
Java集合源码
】LinkedList
【
Java集合源码
】LinkedListLinkedList简介LinkedList内部结构LinkedList注释解析LinkedList构造函数LinkedList添加方法LinkedList检索方法
_Mona
·
2019-01-21 18:49
Java源码阅读
JAVA集合源码
分析——HashMap
HashMap概述1)HashMap底层数据结构在1.7之前是数组+链表而1.8之后是数组+链表+红黑树2)三个变量:initCapacity(数组初始容量)、LoadFactory(加载因子)、thresold3)三个过程:数组扩容的过程(resize)、扩容后原数组数据转移到新数据结构的过程、数组添加元素的过程(putval)4)三个方法:resize();、tablesizeFor()、ha
csdnadvancer
·
2019-01-16 14:24
JAVA集合源码
分析——Vector
一、Vector概述1)Vector是一个位于java.util包中线程安全的集合2)底层数据结构是类似ArrayList一样的可变的数组3)Vector的数组变化和minCapacity和CapacityIncrement这两个变量有关4)Vector会发生fail-fast(快速失败)二、Vector继承层次和实现接口1)继承层次和实现接口说明:Vector继承的层次和实现的接口基本和Arra
csdnadvancer
·
2019-01-10 23:25
JAVA集合源码分析
JAVA集合源码
分析——LinkedList
一、LinkedList概述1)linkedList是基于双向链表实现的有序序列,对插入和删除具备高效率2)linkedList继承AbstractSequentialList的双向链表3)实现了List接口,可以实现队列操作4)实现了Deque接口,能被当做双端队列使用5)实现了Cloneable接口,能调用Object.clone()方法6)实现了Serializable接口,支持序列化,非同
csdnadvancer
·
2019-01-08 13:10
LinkedList源码分析
Java集合源码
之CopyOnWrite-CopyOnWriteArrayList
什么是CopyOnWrite?概括为"写时复制",通俗的讲是写数据的时候弄出一个新的数组,然后讲旧的数据拷贝过去,更新后再将引用指向新数组。这样在添加删除元素时就不会影响旧数组的读取了,确保高并发时读的效率,但是存在延时。下面以CopyOnWriteArrayList作为例子1写的方法add()-其他修改的方法类似:publicbooleanadd(Ee){finalReentrantLocklo
Lidisam
·
2018-12-17 23:44
JAVA
【
Java集合源码
】ArrayList
【
Java集合源码
】ArrayListArrayList简介ArrayList常量ArrayList构造函数ArrayList扩容机制System.arraycopy()和Arrays.copyOf()
_Mona
·
2018-12-03 16:49
Java源码阅读
【
Java集合源码
】写在前面的适配器模式
最近开始阅读Java集合的源码,但首先被下面这张图困惑了:可以看到,ArrayList继承了抽象类AbstractList,AbstractList又继承了AbstractCollection类且实现了List接口。好奇,为什么需要这两个抽象类,不过在此之前需要先弄清两个概念:抽象类、接口抽象类:在了解抽象类之前,先来了解一下抽象方法。抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方
_Mona
·
2018-12-02 21:44
Java源码阅读
Java集合源码
分析-LinkedHashMap
建议先搞明白HashMap的原理再看LinkedHashMap,
Java集合源码
分析-HashMap。
宛丘之上兮
·
2018-11-16 18:37
Java集合源码
解析:HashMap
本文概要HashMap概述HashMap数据结构HashMap的源码解析HashMap概述在官方文档中是这样描述的:HashtablebasedimplementationoftheMapinterface.Thisimplementationprovidesalloftheoptionalmapoperations,andpermitsnullvaluesandthenullkey.(TheHa
dk2077
·
2018-11-08 19:42
Java集合源码解析
Java集合源码
分析系列文章
Java集合源码
分析之基础(一):数组与链表https://www.jianshu.com/p/1ee38f446d1b
Java集合源码
分析之基础(二):哈希表https://www.jianshu.com
scarecrowtb
·
2018-07-02 09:01
Java集合源码
分析之Queue(三):ArrayDeque
在介绍了Queue与Deque概念之后,这是要进行分析的第一个实现类。ArrayDeque可能大家用的都比较少,但其实现里有许多亮点还是值得我们关注的。Deque的定义为doubleendedqueue,也就是允许在两侧进行插入和删除等操作的队列。这个定义看起来很简单,那么我们怎么实现它呢?我们最容易想到的就是使用双向链表。我们在前文介绍过单链表,其每个数据单元都包含一个数据元素和一个指向下一个元
码到成功-
·
2018-06-23 22:35
JAVA
集合
上一页
1
2
3
4
5
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他