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
集合源码
分析之超级接口:Collection
CollectionCollection是List、Queue和Set的超集,它直接继承于Iterable,也就是所有的Collection集合类都支持for-each循环。除此之外,Collection也是面向接口编程的典范,通过它可以在多种实现类间转换,这也是面向对象编程的魅力之一。方法定义在阅读源码前,我们可以先自行想象一下,如果我们想封装下数组或链表以方便操作,我们需要封装哪些功能呢?比如
大大纸飞机
·
2020-02-10 00:56
小白学Java:奇怪的RandomAccess
:奇怪的RandomAccessRandomAccess是个啥forLoop与Iterator的区别判断是否为RandomAccess小白学Java:奇怪的RandomAccess我们之前在分析那三个
集合源码
的时候
天乔巴夏丶
·
2020-01-20 16:00
Java小白
集合源码
的学习系列:Vector
目录Vector源码学习Vector继承体系Vector核心源码基本属性构造器扩容机制Enumeration概述源码描述具体操作Vector总结Vector源码学习前文传送门:Java小白
集合源码
的学习系列
天乔巴夏丶
·
2020-01-17 22:00
Java小白
集合源码
的学习系列:LinkedList
目录LinkedList源码学习LinkedList继承体系LinkedList核心源码Deque相关操作总结LinkedList源码学习前文传送门:Java小白
集合源码
的学习系列:ArrayList本篇为
集合源码
学习系列的
天乔巴夏丶
·
2020-01-17 15:00
Java小白
集合源码
的学习系列:ArrayList
目录ArrayList源码学习ArrayList的继承体系ArrayList核心源码ArrayList扩容机制最后的总结ArrayList源码学习本文基于JDK1.8版本,对集合中的巨头ArrayList做一定的源码学习,将会参考大量资料,在文章后面都将会给出参考文章链接,本文用以巩固学习知识。ArrayList的继承体系ArrayList继承了AbstracList这个抽象类,还实现了List接
天乔巴夏丶
·
2020-01-15 21:00
平安金融科技移动技术周报(第二十八期)
平安金融科技移动技术周报(第二十八期)@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
容器类源码解析系列(四)---SparseArray分析(最新版)
容器类源码解析系列(一)——ArrayList源码分析(最新版)容器类源码解析系列(二)——LinkedList
集合源码
分析(最新版)容器类源码解析系列(三)——HashMap源码分析(最新版)Sparse
宇宝守护神y
·
2020-01-07 12:50
Java
集合源码
分析之HashMap
前言HashMap可以说是我们日常开发中特别经常使用到的对象映射关系集合类了,本文将结合JDK1.8源码从线程安全、数据结构、初始化、扩容、增删改查、特性总结等几个部分去分析HashMap线程安全HashMap是非线程安全的,不支持并发。我们可以从它的数据迭代器中可以得知,当产生线程安全问题时会抛出抛出ConcurrentModificationException异常。内部是通过一个modCoun
小甜李子
·
2020-01-04 18:39
Java入门(三)——集合概讲
我们这里不会设计多深,仅仅作为了解入门,深入了解请移步各种
集合源码
文章。好的,下面正是开始介绍...Java集合为何而生我们知道,Java是一门面向对象编程语言,这也就意味着程序中存在着大量的对象。
奔跑的瓜牛
·
2020-01-04 03:00
Java
集合源码
分析之ArrayList
前言ArrayList可以说是我们日常开发中特别经常使用到的集合类了,本文将结合JDK1.8源码从线程安全、数据结构、初始化、扩容、增删改查、特性总结等几个部分去分析ArrayList线程安全ArrayList是非线程安全的,不支持并发。我们可以从它的数据迭代器ArrayList$Itr中可以得知,当产生线程安全问题时会抛出抛出ConcurrentModificationException异常。内
小甜李子
·
2020-01-02 19:58
集合源码
之ConcurrentHashMap
引子上篇解析过的hashmap不是线程安全的,因此并发大师DougLea在jdk1.5增加了concurrenthashmap类以满足开发者在多线程环境安全使用map的需要。concurrenthashmap作为多线程环境常使用的类,它是如何实现线程安全的?但是又为什么说它不能完全替代hashtable?弱一致性又是怎样一回事?读完这篇解析concurrenthashmap的文章,我相信你会对co
jatesun
·
2020-01-02 08:12
Java
集合源码
分析之LinkedHashMap
前言今天写一下经常拿来与HashMap对比的LinkedHashMap源码分析。那么LinkedHashMap存在的意义在哪?我们从HashMap文章里可以知道HashMap是无序的,而LinkedHashMap正是为了解决这一问题的。LinkedHashMap是继承自HashMap,因此HashMap的相关操作其实在HashMap中都已经实现了。它对于HashMap的扩展主要是其内部还维护了一个
小甜李子
·
2019-12-30 00:41
Java 基础(七)
集合源码
解析 Map
Map我们都知道Map是键值对关系的集合,并且键唯一,键一对一对应值。关于Map的定义,大概就这些吧,API文档的定义也是酱紫。照惯例,我们来看类结构图吧~~都是一些行为控制的方法,用过Map集合的我们都熟悉这些方法,我就不做过多的赘述了,这里我们重点来看看嵌套类Map.EntryMap.Entry定义:映射项(键-值对)。Map.entrySet方法返回映射的collection视图,其中的元素
Anonymous___
·
2019-12-28 04:46
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
List接口下的
集合源码
分析——ArrayList
从本篇开始将对实现List接口的集合——ArrayList、LinkedList、Vector做一个源码分析。那么先从ArrayList开始吧。一、ArrayList概述在源码中对ArrayList是这么描述的:Arraylist是实现List接口的可调整大小的数组,拥有List接口的所有操作,可包含任何类型的元素,包括null值。这个类除了非同步的特性,大体上和Vector是相同的。它的size
Wangheguan
·
2019-12-07 07:57
Java 学习资料整理
集合框架部分Java
集合源码
解析系列个人感觉这个博主对Java集合部分的源码进行了深入阅读,可以参考Java
集合源码
解析(1):IteratorJava
集合源码
解析(2):ListIterator但是看了一下
熊熊要更努力
·
2019-12-07 00:24
曼德布洛特集合绘制
matplotlib实现二维数据到图像的转换,添加colormap,无边距显示:https://blog.csdn.net/u010105243/article/details/76695400极客学院源码曼德布洛特
集合源码
采香行处蹙连钱
·
2019-12-01 18:42
Java面试题
Java面试题Java
集合源码
分析https://www.cnblogs.com/joemsu/p/7667509.htmlArrayList内部数组:Object[]elementData;默认大小10
xiaogmail
·
2019-11-28 08:52
List接口下的
集合源码
分析——LinkedList
源码版本JDK1.8今天带来的是List的另一种实现——LinkedList,这是一种基于双向链表实现的列表。接下来让我们通过源码来分析一下它吧。关于源码中的一些小改动在JDK1.6及之前,LinkedList底层是一个双向循环链表,容器中的元素都是静态内部类Entry的对象,列表中必有一个空头结点;在JDK1.7及之后,LinkedList底层是一个双向非循环链表,容器中的元素都是静态内部类No
Wangheguan
·
2019-11-07 19:40
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
集合源码
基础之数组扩容技术
集合源码
基础之数组扩容技术数组复制1:Arrays.copyOf(Object[]objects,intlength)Arrays.copyOf(Object[]objects,intlength)功能是实现数组的复制
web_bird
·
2019-09-29 09:00
【Redis5源码学习】浅析redis命令之keys篇
查找并返回所有符合给定模式pattern的key命令格式:KEYSpattern命令实战:127.0.0.1:6379>keys*1)"kkk"2)"key1"返回值:根据pattern匹配后的所有键的
集合源码
分析
NoSay
·
2019-09-27 12:55
php
redis
c
Java
集合源码
全面分析
Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组、链表、栈、队列、集合、哈希表等。学习Java集合框架下大致可以分为如下五个部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具类(Arrays、Collections)。从上图中可以看出,集合类主要分为两大类:Collection和Map。Collection是List、
·
2019-09-24 03:03
(一)ArrayList
集合源码
解析
一、ArrayList的集合特点问题结论ArrayList是否允许空允许ArrayList是否允许重复数据允许ArrayList是否有序有序ArrayList是否线程安全非线程安全二、ArrayList的原理ArrayList底层是一个Object[]elementData数组,能够实现动态扩容,增减。从源码看ArrayList实现了RandomAccess,Cloneable,Serializa
咸鱼也要有梦想
·
2019-09-17 16:00
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源码分析
Redis学习之intset整数
集合源码
分析
1.整数集合:整数的集合,升序排序,无重复元素2.整数集合intset是集合键的底层实现之一,当一个集合只包含整数值的元素,并且这个集合的元素数量不多时,redis会使用整数集合作为集合键的底层实现3.intset可通过属性自定义编码方式(int16_t/int32_t/int64_t)4.当往inset插入新元素时,如果新元素的类型比inset的原编码类型长,那么要先对inset进行“升级”操作
Y先森0.0
·
2019-07-26 11:00
并发编程(五)ConcurrentHashMap源码简析
ConcurrentHashMap这个集合是在面试中出现频率较高的一个集合,这个集合的源码层面体现了多处并发设计的思想,除此之外,其底层存储结构也有很多值得考量的地方,源码实现中对位运算的运用也相当成熟,因此这个
集合源码
有很高的学习价值
谜一样的Coder
·
2019-07-21 16:59
多线程
Java
集合源码
分析(一)——ArrayList源码分析
一、如何看源码:看数据结构:底层数据结构看继承结构:类的层次结构,处于一个什么样的位置看构造方法:看看做了哪些事,跟踪方法里面的方法看常用的方法:与构造方法类型,看看该方法是如何实现的二、ArrayList源码分析:1、数据结构:ArrayList是基于数组,数组元素类型为Object,即可以存放所有类型的数据2、继承结构:问题1:为什么要用AbstractList实现List,然后ArrayLi
buer219
·
2019-07-16 20:36
【JDK1.8】JDK1.8
集合源码
阅读——LinkedHashMap
原文链接:http://www.cnblogs.com/lukelook/p/11093946.html详见:【JDK1.8】JDK1.8
集合源码
阅读——LinkedHashMap一、前言二、LinkedHashMap
weixin_30576859
·
2019-06-26 21:00
Java学习之路——Java
集合源码
分析(二)
Map我们先看一下官方的注释:Anobjectthatmapskeystovalues.Amapcannotcontainduplicatekeys;*eachkeycanmaptoatmostonevalue.简单解释一下:将键映射到值上,Map不能包含重复的键,每个键最多只能映射一个值。Map是Map家族的顶层接口,它规范了作为Map家族的基本方法Map与List,与Set不同,它没有父接口,
问荆_
·
2019-06-04 18:02
集合源码
阅读——ArrayList
ArrayList关键点:>>扩容每次扩容1.5倍>>modcount的作用>>ArrayList的父类AbstractList的成员变量>>ArrayList中的许多方法都会出现modcount++的操作>>ArrayList中的迭代器,返回一个Itr类型的对象>>modCount在操作ArrayList的时候会自增,用来记录操作的次数。>>父类AbstractList中的expectedMod
DeepSleeping丶
·
2019-06-03 23:00
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
集合源码
剖析系列02: Collection架构
1.概要:首先,我们来看下Collection的一些框架类的关系如下图:image.png>从图中我们可以看到,Collection是一个接口,主要分支有list和set接口,list和set接口有他们各自的实现类。通过接口进行抽象,接口允许我们操作集合时不必关注具体实现,从而达到“多态”。为了方便我们抽象出了AbstractCollection抽象类,它实现了Collection中的绝大部分函数
Mr_Ares
·
2019-04-30 17:55
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包下的并发
集合源码
。
宛丘之上兮
·
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源码分析
jdk
集合源码
阅读(六):Stack源码分析(基于JDK1.8)
Stack简介Stack是栈。它的特性是:先进后出(FILO,FirstInLastOut)。java工具包中的Stack是继承于Vector(矢量队列)的,由于Vector是通过数组实现的,这就意味着,Stack也是通过数组实现的,而非链表。当然,我们也可以将LinkedList当作栈来使用。Stack是线程安全的。建议在学习Stack之前先学习Vector类。Stack结构publicclas
晓寒风骤
·
2018-12-21 15:10
jdk源码
上一页
2
3
4
5
6
7
8
9
下一页
按字母分类:
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
其他