码迷,mamicode.com
首页 > 编程语言 > 详细

Java 基础 集合框架

时间:2018-01-13 11:20:29      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:tor   使用   targe   htable   复杂度   body   eset   sof   http   

  Java中的集合从类的继承和接口的实现结构来说,可以分为两大类:

  1 继承自Collection接口,包含List、Set和Queue等接口和实现类。

  2 继承自Map接口,主要包含哈希表相关的集合类。

 

  第一类

  Collection接口继承和实现结构图如下:

技术分享图片

  图中的绿色的虚线代表实现,绿色实线代表接口之间的继承,蓝色实线代表类之间的继承,下同。

  List

  常用的是ArrayList和LinkedList。ArrayList通过数组实现,随机访问比较快,增删操作比较慢。而LinkedList通过链表实现,增删操作比较快,随机访问比较慢。两者都是非线程安全的。

  Queue

  LinkedList实现了Deque接口,所以LinkedList具有双端队列的功能。PriorityQueue内部数据结构是堆,每次出队列的元素总是当前队列中最大值(大顶堆)或是最小值(小顶堆)。

  Set

  Set与List的主要区别是Set不允许元素重复,而List允许元素重复。HashSet和LinkedHashSet的区别在于后者保证元素插入集合的元素顺序与输出顺序保持一致。而它们与TreeSet的区别在于TreeSet按照Comparator进行排序,默认情况下按照字符的自然顺序升序排列。

  

  第二类

  Map接口继承和实现结构图如下:

技术分享图片

  Map类型的集合最大的优点在于其查找效率比较高,理想情况下可以实现O(1)的时间复杂度。Map中最常用的是HashMap。LinkedHashMap与HashMap的区别在于前者能够保证插入集合的元素顺序与输出顺序一致。这两者与TreeMap的区别在于TreeMap根据键值进行排序,底层的实现也有本质的区别,如HashMap底层是一个哈希表,而TreeMap的底层是一棵树。在多线程环境下,通常使用ConcurrentHashMap,因为Hashtable效率比较低。

 

  参考资料

  Java集合之整体结构

Java 基础 集合框架

标签:tor   使用   targe   htable   复杂度   body   eset   sof   http   

原文地址:https://www.cnblogs.com/WJQ2017/p/8278389.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!