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
集合源码
之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
资源调度(学习笔记)
文章目录资源调度流程资源调度原理workers集合waitingDriver集合waitingApps集合Schedule方法资源调度源码分析资源调度三大
集合源码
解析一schedule方法1.1Random.shuffle
Hellomdk
·
2018-11-12 18:32
大数据学习笔记
Java
集合源码
解析:HashMap
本文概要HashMap概述HashMap数据结构HashMap的源码解析HashMap概述在官方文档中是这样描述的:HashtablebasedimplementationoftheMapinterface.Thisimplementationprovidesalloftheoptionalmapoperations,andpermitsnullvaluesandthenullkey.(TheHa
dk2077
·
2018-11-08 19:42
Java集合源码解析
集合源码
分析(五)TreeSet集合
1、TreeSet概述:TreeSet是Set的一个子类,TreeSet集合是用来对象元素进行排序的,同样他也可以保证元素的唯一。底层是二叉树算法实现。TreeSet是一个有序的集合,它的作用是提供有序的Set集合。它继承于AbstractSet抽象类,实现了NavigableSet,Cloneable,java.io.Serializable接口。TreeSet继承于AbstractSet,所以
一棵树~
·
2018-09-29 15:30
Java基础
线程的基本概念
按照规划,从本篇开始我们开启『并发』系列内容的总结,从本篇的线程开始,到线程池,到几种并发
集合源码
的分析,我们一点点来,希望你也有耐心,因为并发这块知识是你职业生涯始终绕不过的坎,任何一个项目都或多或少的要涉及一些并发的处理
Single_Yam
·
2018-08-20 09:00
JDK(六)JDK1.8源码分析【集合】LinkedHashMap
原文链接:http://www.cnblogs.com/warehouse/p/9344907.html本文转载自joemsu,原文连接【JDK1.8】JDK1.8
集合源码
阅读——LinkedHashMapLinkedHashMap
dlx29376
·
2018-07-21 02:00
Java
集合源码
分析系列文章
Java
集合源码
分析之基础(一):数组与链表https://www.jianshu.com/p/1ee38f446d1bJava
集合源码
分析之基础(二):哈希表https://www.jianshu.com
scarecrowtb
·
2018-07-02 09:01
Java
集合源码
分析之Queue(三):ArrayDeque
在介绍了Queue与Deque概念之后,这是要进行分析的第一个实现类。ArrayDeque可能大家用的都比较少,但其实现里有许多亮点还是值得我们关注的。Deque的定义为doubleendedqueue,也就是允许在两侧进行插入和删除等操作的队列。这个定义看起来很简单,那么我们怎么实现它呢?我们最容易想到的就是使用双向链表。我们在前文介绍过单链表,其每个数据单元都包含一个数据元素和一个指向下一个元
码到成功-
·
2018-06-23 22:35
JAVA
集合
Java
集合源码
分析之基础(五):平衡二叉树(AVL Tree)
二叉排序树很好的平衡了插入与查找的效率,但不平衡的二叉排序树效率大打折扣。今天介绍的AVL树就是一种解决此问题的方案。定义平衡二叉树(Self-BalancingBinarySearchTree或Height-BalancedBinarySearchTree),是一种二叉排序树,其中每一个节点的左子树和右子树的高度差至多等于1。它是一种高度平衡的二叉排序树。意思是说,要么它是一棵空树,要么它的左子
码到成功-
·
2018-06-21 22:55
算法
JAVA
集合
java集合框架-List集合ArrayList和LinkedList详解
List
集合源码
剖析✅ArrayList底层是基于数组,(数组在内存中分配连续的内存空间)是对数组的升级,长度是动态的。
程序员卖视频会员
·
2018-06-05 19:32
源码:Java
集合源码
之:哈希表(二)
要想知道一个元素是否在数组或链表中,只能从前向后挨个对比,无论是数组还是链表,其对数据的查询表现都比较无力。在的二叉排序树中,还会将数据排序以进行二分查找,将时间复杂度从O(n)降低到O(lgn)。出现这个问题的根源在于,我们没有办法直接根据一个元素找到它存储的位置。那有没有办法消除这个对比的过程呢?哈希表就是解决查询问题的一种方案。什么是哈希表与Hash函数通俗来讲,哈希表就是通过关键字来获取数
一只阿木木
·
2018-05-30 18:00
源码:Java
集合源码
之:数组与链表(一)
数组和链表是数据结构中最基本的部分。数组在java中,数组定义为一种基本类型,其可以通过下标获取到对应位置的数据。那么这种结构的数据,在内存中是怎么存放的呢?数组在内存中是一段连续的存储单元,每个数据依次放在每个单元中。分析这种结构,我们可以得出以下几个结论:创建一个数组,必须声明其长度,以在内存中寻找合适的一段连续存储单元。这也意味着数组的大小是固定的,我们无法动态调整其大小。想要获取数组中第i
一只阿木木
·
2018-05-30 18:00
JAVA
集合源码
解析 ArrayList 探索(基于JDK1.8)
JDK1.8ArrayList探索本文基于JDK1.8进行分析,由于篇幅有限,只着重分析核心方法。先来个大纲方便各位客官快速获取所需:JDK1.8ArrayList探索1.简介2.探索2.1类关系2.2属性2.3构造方法2.4核心方法3.总结1.简介ArrayList其实是一个动态数组,数组作为其底层支撑,内部的数组实例是Object[]型的,所以允许所有元素,包括空值。ArrayList是不同步
Chandler丶
·
2018-05-10 18:07
JAVA集合解析
Java
集合源码
剖析——ArrayList源码剖析
ArrayList简介ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。ArrayList不是线程安全的,只能用在单线程环境下,多线程环境下可以考虑用Collections.synchronizedList(Listl)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的CopyOnWriteArray
K'illCode
·
2018-04-28 17:44
集合
java
搞懂 Java LinkedList 源码
周末有时间把手头的工作放一放,来继续进行Java
集合源码
的学习。今天来学习下「LinkedList」的源码。LinkedList的概述LinkedList的构造方法Li
醒着的码者
·
2018-04-01 03:03
Java集合迭代时修改
Java集合迭代时修改本文主要分如下几个要点:0)Java集合分类1)对于熟悉JDK
集合源码
的帮你加深对ConcurrentModificationException的下印象2)对于迭代时修改提供一个正确的姿势
mayongzhan_csdn
·
2018-02-11 12:58
技术博客
Java
集合源码
实现四:LinkedHashMap(jdk1.8)
Java
集合源码
实现四:LinkedHashMap(jdk1.8)Java
集合源码
实现四LinkedHashMapjdk18类继承关系什么是LinkedHashMapLinkedHashMap数据结构源码分析类继承实现成员变量
零2一
·
2018-01-10 09:53
Java集合源码实现原理
Java
集合源码
实现二:LinkedList(jdk1.8)
Java
集合源码
实现二:LinkedList(jdk1.8)Java
集合源码
实现二LinkedListjdk18类继承关系LinkedListLinkedList数据结构源码分析类继承实现成员变量Node
零2一
·
2018-01-05 16:42
Java集合源码实现原理
java
linkedlist
源码
jdk
java1.8 过时
集合源码
学习:Hashtable
1、api此类实现一个哈希表,该哈希表将键映射到相应的值。任何非null对象都可以用作键或值。为了成功地在哈希表中存储和获取对象,用作键的对象必须实现hashCode方法和equals方法。Hashtable的实例有两个参数影响其性能:初始容量和加载因子。容量是哈希表中桶的数量,初始容量就是哈希表创建时的容量。注意,哈希表的状态为open:在发生“哈希冲突”的情况下,单个桶会存储多个条目,这些条目
猫耳山大王
·
2017-10-28 16:15
java源码学习:1.8
java1.8 过时
集合源码
学习:Hashtable
1、api此类实现一个哈希表,该哈希表将键映射到相应的值。任何非null对象都可以用作键或值。为了成功地在哈希表中存储和获取对象,用作键的对象必须实现hashCode方法和equals方法。Hashtable的实例有两个参数影响其性能:初始容量和加载因子。容量是哈希表中桶的数量,初始容量就是哈希表创建时的容量。注意,哈希表的状态为open:在发生“哈希冲突”的情况下,单个桶会存储多个条目,这些条目
猫耳山大王
·
2017-10-28 16:15
java源码学习:1.8
java1.8 常用
集合源码
学习:TreeSet
1、api基于TreeMap的NavigableSet实现。使用元素的自然顺序对元素进行排序,或者根据创建set时提供的Comparator进行排序,具体取决于使用的构造方法。此实现为基本操作(add、remove和contains)提供受保证的log(n)时间开销。注意,如果要正确实现Set接口,则set维护的顺序(无论是否提供了显式比较器)必须与equals一致。(关于与equals一致的精确
猫耳山大王
·
2017-10-28 16:19
java源码学习:1.8
java1.8 常用
集合源码
学习:TreeMap
1、api基于红黑树(Red-Blacktree)的NavigableMap实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的Comparator进行排序,具体取决于使用的构造方法。此实现为containsKey、get、put和remove操作提供受保证的log(n)时间开销。这些算法是Cormen、Leiserson和Rivest的IntroductiontoAlgorithms
猫耳山大王
·
2017-10-28 16:00
java源码学习:1.8
java1.8 常用
集合源码
学习:LinkedHashMap
1、apiMap接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现与HashMap的不同之处在于,它维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序通常就是将键插入到映射中的顺序(插入顺序)。注意,如果在映射中重新插入键,则插入顺序不受影响。(如果在调用m.put(k,v)前m.containsKey(k)返回了true,则调用时会将键k重新插入到映射m中。)此实
猫耳山大王
·
2017-10-21 14:44
java源码学习:1.8
java1.8 常用
集合源码
学习:LinkedHashMap
1、apiMap接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现与HashMap的不同之处在于,它维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序通常就是将键插入到映射中的顺序(插入顺序)。注意,如果在映射中重新插入键,则插入顺序不受影响。(如果在调用m.put(k,v)前m.containsKey(k)返回了true,则调用时会将键k重新插入到映射m中。)此实
猫耳山大王
·
2017-10-21 14:44
java源码学习:1.8
java1.8 常用
集合源码
学习:HashSet
1、api此类实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。此类为基本操作提供了稳定性能,这些基本操作包括add、remove、contains和size,假定哈希函数将这些元素正确地分布在桶中。对此set进行迭代所需的时间与HashSet实例的大小(元素的数量)和底层HashMap实例(桶的数量)
猫耳山大王
·
2017-10-21 14:55
java源码学习:1.8
java1.8 常用
集合源码
学习:HashSet
1、api此类实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。此类为基本操作提供了稳定性能,这些基本操作包括add、remove、contains和size,假定哈希函数将这些元素正确地分布在桶中。对此set进行迭代所需的时间与HashSet实例的大小(元素的数量)和底层HashMap实例(桶的数量)
猫耳山大王
·
2017-10-21 14:55
java源码学习:1.8
集合源码
学习(七):HashMap(Java8)
Java8中,新加了很多新特性,特别是集合,分割迭代器,Stream,FunctionalInterface等等,Java8中的HashMap也和以往的实现略有不同。这些天看了好久的HashMap,理清了HashMap的结构以及实现原理,听我慢慢分析。HashMap是什么?/***基于Map接口实现,允许null值和null键。*HashMap和HashTable很相似,只是HashTable是同
6点A君
·
2017-10-15 21:13
集合源码学习
java1.8 常用
集合源码
学习:HashMap
1、先看api基于哈希表的Map接口的实现。此实现提供所有可选的映射操作,并允许使用null值和null键。(除了非同步和允许使用null之外,HashMap类与Hashtable大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get和put)提供稳定的性能。迭代collection视图所需的时间与HashMap实例的“容
猫耳山大王
·
2017-10-09 15:51
java源码学习:1.8
Java
集合源码
分析系列-(一)ArrayList源码剖析
前言今天介绍经常使用的一个Java集合类——ArrayList(基于JDK1.8.0_121)。ArrayList在工作和日常面试中经常被使用或者提到。总的来说,工作中使用ArrayList主要是因为动态数组的方便性,面试中出现ArrayList经常是和LinkedList/Vector一起出现,分析这三种集合的异同。ArrayList类图图片是直接从IntelliJ中导出来的,其中:蓝色线条意味
君若雅
·
2017-10-03 00:00
java
Java 基础(六)
集合源码
解析 Queue
QueueQueue继承自Collection,我们先来看看类结构吧,代码量比较少,我直接贴代码了publicinterfaceQueueextendsCollection{booleanadd(Evar1);booleanoffer(Evar1);Eremove();Epoll();Eelement();Epeek();}从方法名上不太好猜每个方法的作用,我们直接来看API吧~抛出异常返回特殊值
Anonymous___
·
2017-09-28 14:48
Java 基础(五)
集合源码
解析 Set
Set接口前面我们学了List集合。我们知道List是一个有序的集合,可以根据元素的整数索引访问元素,并且允许重复。今天我们一起来学习集合的第二大类型---Set集合。Set也是一个接口,继承自Collection接口。定义:一个不包含重复元素的Collection。什么叫重复元素?set的定义是不包含满足e1.equals(e2)的元素对e1和e2,并且最多只包含一个null元素。从图上我们可以
Anonymous___
·
2017-09-26 16:51
Java 基础(四)
集合源码
解析 List
List接口前面我们学习了Iterator、Collection,为集合的学习打下了基础,现在我们来学习集合的第一大体系List。List是一个接口,定义了一组元素是有序的、可重复的集合。List继承自Collection,较之Collection,List还添加了以下操作方法位置相关:List的元素是有序的,因此有get(index)、set(index,object)、add(index,ob
Anonymous___
·
2017-09-26 10:27
深入Map
集合源码
的几个实现
一、对HashMap源码的深入理解1、HashMap默认16个数组元素大小,加载因子0.75f2、记载因子用来计算下次扩容的临界值(寄不是Entry数组满了之后才进行扩容,而是到了数组到了扩容临界值就进行扩容)3、HashMap能存入空key(也能存储null值),但是只能存一个null,多个null的key会被后面的覆盖,并且始终是存放在map第一位4、HashMapEntry数组里每个元素存储
fqf_520
·
2017-09-11 17:27
学习笔记
【Java
集合源码
剖析1.3】Vector源码剖析(API23)
Vector共有4个构造函数//默认构造函数Vector()//capacity是Vector的默认容量大小。当由于增加数据导致容量增加时,每次容量会增加一倍。Vector(intcapacity)//capacity是Vector的默认容量大小,capacityIncrement是每次Vector容量增加时的增量值。Vector(intcapacity,intcapacityIncrement)
MrLuo
·
2017-07-31 14:46
【Java
集合源码
剖析1.1】ArrayList源码剖析(API23)
首先publicclassArrayListextendsAbstractListimplementsCloneable,Serializable,RandomAccessArrayList类实现了这三个接口,具有可复制的,可序列化的,以及快速随机访问的特性。一,构造函数publicArrayList(intcapacity){//EmptyArray.OBJECT其实就是newObject[0]
MrLuo
·
2017-07-28 11:54
Java1.8
集合源码
:ArrayList 详细解析
一.ArrayList1.重点概念归纳List接口的可变数组的实现。实现了所有可选列表操作,并允许包括null在内的所有元素。非线程安全。在多线程情况下操作时,一定要加上synchronized,才能保证多个线程同时对ArrayList进行访问时数据的安全性。底层使用的数据结构是数组。适合查改,弱于增删。实现了Serializable接口,因此它支持序列化,能够通过序列化传输。实现了RandomA
ITermeng
·
2017-05-27 08:00
java
源码
解析
ArrayList
Java
集合源码
解析-ArrayList
从今天开始,会用一段时间对Java集合框架中的一些常用数据结构进行源码解析(部分的源码解析会以注释的方式出现)。首先入手的是ArrayList,ArrayList是一个动态数组,其容量能够自动增长。publicclassArrayListextendsAbstractListimplementsList,RandomAccess,Cloneable,java.io.Serializable从Arr
dream_lixiang
·
2017-03-08 15:05
java
源码解析
深入Java基础(三)--集合(1)集合父类以及父接口源码及理解
这个系列的三将开启
集合源码
阅读,以及总结java集合api注意点和使用建议。好,废话不多说,开始吧。
JackFrost_fuzhu
·
2017-03-03 12:56
java并发
集合源码
分析之currentHashMap分段加锁分析
ConcurrentHashMap是Java5中新增加的一个线程安全的Map集合,可以用来替代HashTable。对于ConcurrentHashMap是如何提高其效率的,可能大多人只是知道它使用了多个锁代替HashTable中的单个锁,也就是锁分离技术(LockStripping)。实际上,ConcurrentHashMap对提高并发方面的优化,还有一些其它的技巧在里面(比如你是否知道在get操
飞人小天使
·
2016-11-30 11:17
java数据结构
java多线程
Java
集合源码
分析(七)HashMap
一、HashMap概述HashMap基于哈希表的Map接口的实现。此实现提供所有可选的映射操作,并允许使用null值和null键。(除了不同步和允许使用null之外,HashMap类与Hashtable大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。值得注意的是HashMap不是线程安全的,如果想要线程安全的HashMap,可以通过Collections类的静态方法synchron
极客挖掘机
·
2016-08-29 12:00
Java
集合源码
分析(六)TreeSet
TreeSet简介TreeSet是一个有序的集合,它的作用是提供有序的Set集合。它继承于AbstractSet抽象类,实现了NavigableSet,Cloneable,java.io.Serializable接口。TreeSet继承于AbstractSet,所以它是一个Set集合,具有Set的属性和方法。TreeSet实现了NavigableSet接口,意味着它支持一系列的导航方法。比如查找与
极客挖掘机
·
2016-08-03 15:00
Java
集合源码
分析(五)HashSet
HashSet简介HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。HashSet源码分析对于HashSet而言,它是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,因此HashSet的实现比较简单,相关HashSet的操作,基本上都是直接调用底层HashMa
极客挖掘机
·
2016-07-08 16:00
Java
集合源码
分析(四)Vector
Vector简介Vector也是基于数组实现的,是一个动态数组,其容量能自动增长。Vector是JDK1.0引入了,它的很多实现方法都加入了同步语句,因此是线程安全的(其实也只是相对安全,有些时候还是要加入同步语句来保证线程的安全),可以用于多线程环境。Vector没有丝线Serializable接口,因此它不支持序列化,实现了Cloneable接口,能被克隆,实现了RandomAccess接口,
极客挖掘机
·
2016-07-04 08:00
Java
集合源码
分析(三)LinkedList
LinkedList简介LinkedList是基于双向循环链表(从源码中可以很容易看出)实现的,除了可以当做链表来操作外,它还可以当做栈、队列和双端队列来使用。LinkedList同样是非线程安全的,只在单线程下适合使用。LinkedList实现了Serializable接口,因此它支持序列化,能够通过序列化传输,实现了Cloneable接口,能被克隆。LinkedList源码以下是linkedL
极客挖掘机
·
2016-07-03 09:00
Java
集合源码
分析(二)ArrayList
ArrayList简介ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。ArrayList不是线程安全的,只能用在单线程环境下,多线程环境下可以考虑用Collections.synchronizedList(Listl)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的CopyOnWriteArray
极客挖掘机
·
2016-07-02 09:00
Java
集合源码
分析(一)
Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组、链表、栈、队列、集合、哈希表等。学习Java集合框架下大致可以分为如下五个部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具类(Arrays、Collections)。从上图中可以看出,集合类主要分为两大类:Collection和Map。Collection是List、
极客挖掘机
·
2016-06-29 17:00
LinkedList
集合源码
解析
LinkedList
集合源码
解析publicclassLinkedListextendsAbstractSequentialListimplementsList,Deque,Cloneable,java.io.Serializable
X1164077611
·
2016-05-24 22:00
源码
集合
LinkedList
上一页
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
其他