zoukankan      html  css  js  c++  java
  • Java 基础 集合框架

      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集合之整体结构

  • 相关阅读:
    Linux搭建maven私服
    eclipse提交项目到GitHub
    eclipse安装sts插件
    idea配置jdk
    C语言之链表————(转载)
    链表(创建,插入,删除和打印输出(转载)
    C语言之链表
    ARM 之LCD和LCD控制器
    ARM的两种启动方式 (NAND FLASH. NOR FLASH)
    ARM 汇编器对C的扩展
  • 原文地址:https://www.cnblogs.com/WJQ2017/p/8278389.html
Copyright © 2011-2022 走看看