学习JDK1.8集合源码之--Vector】的更多相关文章

1. Vector简介 Vector是JDK1.0版本就推出的一个类,和ArrayList一样,继承自AbstractList,实现了List.RandomAccess.Cloneable.java.io.Serializable接口,底层也是基于数组实现的,不同的是它是一个线程安全的类. 2. Vector实现 1. 核心属性 //底层存储数组 protected Object[] elementData; //数组内实际存储元素个数 protected int elementCount; /…
1. LinkedHashSet简介 LinkedHashSet继承自HashSet,故拥有HashSet的全部API,LinkedHashSet内部实现简单,核心参数和方法都继承自HashSet,只是重写了spliterator一个方法. HashSet底层通过HashMap进行数据存储,而LinkedHashSet则是通过LinkedHashMap进行数据存储,故LinkedHashSet是一个有序的不可重复集合,非线程安全. 2. LinkedHashSet实现 //继承自HashSet,…
参考文档: https://cloud.tencent.com/developer/article/1145014 https://segmentfault.com/a/1190000018578944 http://www.importnew.com/9928.html https://blog.csdn.net/zero__007/article/details/52166306 1. ArrayList简介 ArrayList底层基于数组实现的一种线性数据结构,通过数组的索引原理实现了快速…
1. WeakHashMap简介 WeakHashMap继承自AbstractMap,实现了Map接口. 和HashMap一样,WeakHashMap也是一种以key-value键值对的形式进行数据的存储,底层存储结构为数组加链表,并且键值都可以为null.与HashMap不同的是,WeakHashMap实现了弱引用,当一个key不再正常使用时,会从WeakHashMap中自动移除,被GC回收并存入ReferenceQueue中.而这一特点主要是通过ReferenceQueue加WeakRefe…
1. HashMap简介 HashMap是一种key-value结构存储数据的集合,是map集合的经典哈希实现. HashMap允许存储null键和null值,但null键最多只能有一个(HashSet就是以HashMap实现的,通过HashMap的key存储元素,所以HashSet也最多允许存储一个null值并且其中的元素不可重复). HashMap是非线程安全的实现,在多线程环境下会出现数据丢失的情况,与JDK1.8以前不同的是并不会出现死循环的情况.在多线程情况下最好使用Concurren…
1. ArrayDeque简介 ArrayDeque是基于数组实现的一种双端队列,既可以当成普通的队列用(先进先出),也可以当成栈来用(后进先出),故ArrayDeque完全可以代替Stack,ArrayDeque是非线程安全的,Stack是线程安全的. ArrayDeque虽然是基于数组实现的,但很容易被数组这种数据结构所迷惑.因为数组是从0开始到length-1位置结束的,但ArrayDeque的实现实际上是一种循环结构的队列,首尾位置完全靠head和tail两个首尾指针来决定的,正常理解的…
1. HashSet简介 HashSet是一个不可重复的无序集合,底层由HashMap实现存储,故HashSet是非线程安全的,由于HashSet使用HashMap的Key来存储元素,而HashMap的Key可以允许有一个null值,所以HashSet是可以存储null值的. 由于HashSet的不可重复性,在项目开发中可以利用这一点进行元素去重,但前提是在不考虑线程安全的问题基础上. 2. HashSet的继承关系 HashSet继承自AbstractSet,实现了Set.Cloneable.…
1. Stack简介 Stack是集合中对数据结构栈的一种实现,栈的原则是先进先后出,与队列相反(先进先出).Stack是继承自Vector的,意味着它也是由数组实现的线程安全的,不考虑线程安全的情况下完全可以用LinkedList当做栈来使用. 2. Stack实现 Stack的实现很简单,核心参数和方法都继承自Vector,因为它可以调用Vector的全部API. Stack实际上也是通过数组去实现的. 执行push时(即,将元素推入栈中),是通过将元素追加的数组的末尾中. 执行peek时(…
1. TreeMap简介 TreeMap继承自AbstractMap,实现了NavigableMap.Cloneable.java.io.Serializable接口.所以TreeMap也是一个key-value结构的Map集合,并且提供了搜索导航及排序功能,能够被克隆以及支持序列化操作. TreeMap是基于红黑树实现的有序key-value集合,可以对元素进行自动排序,排序的规则可以是自然排序也可以是实现Comparable接口指定排序方式. 由于红黑树的查找.插入和删除的时间复杂度都是O(…
1. LinkedHashMap简介 LinkedHashMap继承自HashMap,实现了Map接口. LinkedHashMap是HashMap的一种有序实现(多态,HashMap的有序态),可以说是HashMap的一种拓展,弥补了HashMap无序这一缺点,但它实现有序的代价是牺牲了时间和空间上的开销. LinkedHashMap的有序是通过维护一条双向链表保证了元素的有序性,除了有序这一点之外,LinkedHashMap和HashMap差不多,也就没有太多需要描述的了. 2. Linke…