我们知道,HashSet内部使用HashMap存储元素,所以HashSet遍历数据时是无序的,要保证插入的元素有序,我们可以使用LinkedHashSet。本节记录LinkedHashSet源码解析,基于JDK1.8。


HashMap元素插入是无序的,为了让遍历顺序和插入顺序一致,我们可以使用LinkedHashMap,其内部维护了一个双向链表来存储元素顺序,并且可以通过accessOrder属性控制遍顺序为插入顺序或者为访问顺序。本节将记录LinkedHashMap的内部实现原理,基于JDK1.8,并且用LinkedHashMap实现一个简单的LRU。


HashTable是Map接口线程安全实现版本,数据结构和方法实现与HashMap类似,本文记录HashTable源码解析,基于JDK1.8。





Vector和ArrayList非常相似,它们都实现了相同的接口,继承相同的类,就连方法的实现也非常类似。和ArrayList不同的是,Vector是线程安全的,关键方法上都加了synchronized同步锁, 由于Vector效率不高,所以使用的较少,要使用线程安全的ArrayList,推荐CopyOnWriteArrayList,后续再做分析,这里仅记录下Vector源码,基于JDK1.8。


Hosted by Coding Pages
0

AltStyle によって変換されたページ (->オリジナル) /