Java集合
ouyangjun__
这个作者很懒,什么都没留下…
展开
-
Java Map排序详解
一)Map简介java.util.Map是一个键值对集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。HashMap:最常用的Map,它根据key的hashCode值来存储数据,根据key可以直接获取它的Value,同时它具有很快的访问速度。HashMap最多只允许一条记录的key值为Null(多条会覆盖);允许多条记录...原创 2020-04-25 22:30:16 · 26833 阅读 · 0 评论 -
Java Map比较详解
一)Map equals比较方式一:基本类型比较方式二:对象类型比较先创建一个Book对象类,重写equals方法package com.oysept.map;public class Book { private String title; private Integer number; public Book() {} public ...原创 2020-04-25 22:00:40 · 2245 阅读 · 0 评论 -
Java List排序详解
一)List基本类型排序方式一:使用Collections类中sort默认升序排序方式方式二:使用Collections类中sort默认排序方式,并继承Comparator接口自定义升序or降序package com.oysept.list;import java.util.ArrayList;import java.util.Collections;import java....原创 2020-04-25 21:25:11 · 2629 阅读 · 0 评论 -
Java List比较详解
一)List基本类型比较测试方式:声明两个List,分别往List中添加元素,只不过元素的顺序不一致,直接调用List的equals方法,查看返回结果。package com.oysept.list;import java.util.ArrayList;import java.util.List;public class ListCompare { public st...原创 2020-04-25 20:39:43 · 5071 阅读 · 0 评论 -
LinkedBlockingDeque<E>源码详解
一)LinkedBlockingDeque<E>简介LinkedBlockingDeque<E>源码详解(基于jdk1.8.0_162)1)底层由双链表实现。2)是一个可以双端操作的阻塞队列(先进先出,先进后出)。3)创建时,可指定队列初始容量,如未指定,默认为Integer.MAX_VALUE,指定后不能修改。是一个线程安全的队列。类图:Link...原创 2020-01-05 11:15:33 · 315 阅读 · 0 评论 -
LinkedBlockingQueue<E>源码详解
一)LinkedBlockingQueue<E>简介LinkedBlockingQueue<E>源码详解(基于jdk1.8.0_162)1)底层由单链表实现。2)是一个FIFO(先进先出)的阻塞队列。3)创建时,可指定队列初始容量,如未指定,默认为Integer.MAX_VALUE,指定后不能修改。是一个线程安全的队列。类图:LinkedBlock...原创 2020-01-04 20:50:14 · 416 阅读 · 0 评论 -
ArrayBlockingQueue<E>源码详解
一)ArrayBlockingQueue<E>简介ArrayBlockingQueue<E>源码详解(基于jdk1.8.0_162)1)底层由数组实现。2)是一个FIFO(先进先出)的阻塞队列。3)创建时,需指定队列初始容量,指定后不能修改。是一个线程安全的队列。类图:ArrayBlockingQueue<E>继承了AbstractQu...原创 2020-01-04 10:55:19 · 481 阅读 · 0 评论 -
CopyOnWriteArrayList<E>源码详解
一)CopyOnWriteArrayList<E>简介CopyOnWriteArrayList<E>源码详解(基于jdk1.8.0_162)说明:CopyOnWriteArrayList<E>是ArrayList的变体,是一个线程安全的集合。原理:每一次在操作集合的时候,都是先新创建一个数组,填充数据,再把新数组的数据复制一份到源数组中。缺...原创 2019-12-25 22:35:05 · 141 阅读 · 0 评论 -
Hashtable<KV>源码详解
Hashtable<K,V>源码详解(基于jdk1.8.0_162)介绍:Hashtable<K,V>是一种键值对存储结构。 Hashtable<K,V>底层实现方式为数组+单链表了。 Hashtable<K,V>是线程安全的。加锁的方式,把整个方法加锁,容易造成线程等待。 ...原创 2019-11-02 21:50:12 · 362 阅读 · 0 评论 -
HashMap<KV>源码详解
HashMap<K,V>源码详解(基于jdk1.8.0_162)介绍:HashMap<K,V>是一种键值对存储结构。 HashMap<K,V>在jdk1.8之后,底层实现方式变为数组+单链表+红黑树了。 HashMap<K,V>是非线程安全的。 HashMap<K,V&...原创 2019-11-02 20:35:12 · 579 阅读 · 0 评论 -
LinkedList<E>源码详解
LinkedList<E>源码详解(基于jdk1.8.0_162)说明:LinkedList<E>底层是用双链表的方式实现,比较适合add和remove操作场景较多的情况。 线性结构包括数组、单链表、双链表、环性链表、栈等,可参考Java数据结构的文章。双链表结构图(类似于自行车链条,一环扣一环):一)类图LinkedL...原创 2019-10-25 21:10:37 · 604 阅读 · 1 评论 -
Vector<E>源码详解
Vector<E>源码详解(基于jdk1.8.0_162)说明:Vector<E>底层使用了数组的方式实现,是一个线程安全的集合。 该章只列举了常用的增删查改方法,其它可以参考JDK文档。Stack<E>:栈的特性是“先进后出”,继承了Vector<E>类,实现的功能。 相当于...原创 2019-10-25 20:05:21 · 467 阅读 · 0 评论 -
ArrayList<E>源码详解
ArrayList<E>源码详解(基于jdk1.8.0_162)说明:ArrayList<E>底层是基于数组实现,所以是一个有序的集合。 该章只列举了常用的增删查改方法,其它可以参考JDK文档。一)、类图ArrayList<E>继承了AbstractList<E>抽象类,实现了add、remove、set等功能...原创 2019-10-24 21:55:05 · 682 阅读 · 0 评论