
Java集合
程序蛇
这个作者很懒,什么都没留下…
展开
-
LinkedList源码分析
LinkedListLinkedList采用双端链表的数据结构实现,且由于双端链表的特性,LinkedList也可以作为队列、双端队列来使用,不仅如此也可以作为栈使用。public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>,...原创 2019-12-20 10:59:29 · 167 阅读 · 0 评论 -
LinkedHashMap源码分析
LinkedHashMapLinkedHashMap结合了HashMap查询时间复杂度为O(1)和LinkedList增删时间复杂度为O(1)的特性,使其相比起LinkedList的随机访问更加高效,并且相比起HashMap拥有了有序的特性,但由于每一次对元素操作之后需要同时维护HashMap和LinkedList中的存储,性能上相较于HashMap稍慢。LinkedHashMap也可以用来实...原创 2019-12-14 15:32:26 · 596 阅读 · 0 评论 -
HashMap源码分析
HashMapHashMap采用key-value的存储结构,每个唯一key对应一个唯一的value,通常情况下HashMap的查询和修改时间复杂度为O(1),因为是散列存储,HashMap不能保证元素存储的顺序,且线程不安全。public class HashMap<K,V> extends AbstractMap<K,V> implements Map<...原创 2019-12-11 17:45:31 · 106 阅读 · 0 评论 -
ArrayList源码分析
在分析动态数组ArrayList的源码之前先对其底层数据结构——数组进行分析数组数组是一种最基本的数据结构,采用了一组连续的内存空间按顺序存储对象或基本数据类型。其访问的时间复杂度为O(1),插入以及删除由于涉及到元素的移动时间复杂度为O(n),在Java中声明一个数组需要事先指定数组的大小,那么就可能会造成空间浪费以及扩容问题,为了解决这些问题,动态数组ArrayList就诞生了。Arra...原创 2019-12-10 17:35:06 · 126 阅读 · 0 评论 -
ArrayList源码分析
在分析ArrayList前我们需要了解它的底层数据结构——数组数组数组是一种最基本的数据结构,它采用一组连续的内存空间按顺序存储对象或基本数据类型。数组中每个元素都对应一个独一无二的下标,因此数组的随机访问时间复杂度为O(1),但是对于增/删操作需要移动后续元素,这也导致数组的增删时间复杂度为O(n)。在Java程序中,一般通过int [ ] = new int[ size ] 声明一个i...原创 2019-10-14 17:54:51 · 91 阅读 · 0 评论 -
JavaGuide集合汇总
一 ,List Set Map三者的区别List(注重有序):List接口存储一组不唯一(可以有多个元素引用相同的对象),有序的对象。Set(注重独一无二):不允许重复的集合,不会有多个元素引用相同的对象。Map(注重key-value):使用键值对进行存储。Map会维护与Key有关联的value,两个Key可以引用相同的对象,但Key不能重复,典型的Key是String类型,但也可以是任何...原创 2019-09-06 16:27:22 · 5185 阅读 · 0 评论 -
HashMap
HashMapHashMap是应用广泛的哈希表实现,通常HashMap进行put或者get操作,可以达到常数时间的性能,因此它是绝大部分利用key-value进行存取场景的首选,例如实现一个用户的ID和用户信息的运行时存储结构。下面是HashMap的一些特性:①HashMap不是同步的②支持null键和值由于HashMap的key值不重复的特性,只能允许存在一个null键。若出现k...原创 2019-10-04 10:15:54 · 159 阅读 · 0 评论