• Java集合架构


        Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组、链表、栈、队列、集合、哈希表等。学习Java集合框架下大致可以分为如下五个部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具类(Arrays、Collections)。

    Java集合类的整体框架如下:

    其中

    • 实线和空心三角形表示继承关系
    • 虚线和空心三角形表示接口实现关系
    • 虚线和实心三角形表示依赖关系(一个类的方法操作另一个类的对象)

    上述类图中,实线边框的是实现类,比如ArrayList,LinkedList,HashMap等,折线边框的是抽象类,比如AbstractCollection,AbstractList,AbstractMap等,而点线边框的是接口,比如Collection,Iterator,List等。

    由上图可以很清楚的看到Java的容器类主要由两个接口派生而出:CollectionMap

     

        从上图中可以看出,集合类主要分为两大类:Collection和Map。

    Collections和Arrays

    Collection是容器层次结构中根接口。而Collections和Arrays是一个提供一些处理容器类静态方法的类。例如常用的Arrays.sort() Arrays.copy();方法等。

    Collection体系 – Set,List,Queue (三个Interface)

    Set

    一个不包括重复元素(包括可变对象)的Collection,是一种无序的集合。如果a.equals(b),那么set里是不能同时包含a和b的,并且set里最多只能有一个null。

    实现Set的有:

    • HashSet : 内部采用HashMap实现的
    • LinkedHashSet : 采用LinkedHashMap实现
    • TreeSet : 采用TreeMap实现

    List:

    一个有序的Collection(也称序列),元素可以重复。确切的讲,列表通常允许满足 e1.equals(e2) 的元素对 e1 和 e2,并且如果列表本身允许 null 元素的话,通常它们允许多个 null 元素。

    实现List的有:

    • ArrayList : 采用数组实现,适合随机查找,但不适合频繁增删
    • LinkedList : 链表实现,适合频繁增删,但不适合随机查找
    • Vector : 历史遗留产物,同步版的ArrayList(使用了synchronized方法)
    • Stack : 继承自Vector。Java里其实没有纯粹的Stack,可自己实现一个,封装一下LinkedList即可。

    Queue

    一种队列是双端队列,支持在头、尾两端插入和移除元素,主要包括:ArrayDeque、LinkedBlockingDeque、LinkedList。另一种是阻塞式队列,队列满了以后再插入元素则会抛出异常,主要包括ArrayBlockQueue、PriorityBlockingQueue、LinkedBlockingQueue。虽然接口并未定义阻塞方法,但是实现类扩展了此接口。

    Map体系

    Map:是一个键值对的集合。也就是说,一个映射不能包含重复的键,每个键最多映射到一个值。该接口取代了Dictionary抽象类。

    实现map的有:

    • HashMap/HashTable : 和ArrayList一样采用数组实现,超过初始容量会对性能有损耗。
    • TreeMap : TreeMap中所有的元素都保持着某种固定的顺序
    • Properties : 继承的HashTable (用于配置文件)
  • 相关阅读:
    每日日报
    剑指 Offer 18. 删除链表的节点(LeetCode)
    java的访问权限
    java从键盘输入
    剑指 Offer 22. 链表中倒数第k个节点(快慢指针)(LeetCode)
    面试题 02.03. 删除中间节点(LeetCode)
    21. 合并两个有序链表(Leetcode)
    计算总线数据传输率
    时钟周期、总线周期(机器周期)区别
    书单(个人)
  • 原文地址:https://www.cnblogs.com/cascle/p/7213986.html
Copyright © 2020-2023  润新知