Java基础的数据结构类梳理和总结

   虽然用了Java多年,但一直没有对其基础的数据结构类做过系统的总结。最近有个契机,我对其进行了全面总结,以便后续在使用时能够快速索引和参考。
    Java 中的基础数据结构主要包括集合框架(Collection Framework)和映射(Map)。它们提供了多种接口和实现类,便于开发者高效地管理和操作数据。这些数据结构的继承关系错综复杂,但可以通过几个核心接口和类来理解其主要结构。如下图:

 

图中可以看出主要分为Collection和Map体系,这里对其分别进行拆解。

Collection体系:

List(列表)

  • List是有序集合,允许重复元素。
  • 常见的实现类有ArrayList和LinkedList
    • ArrayList基于动态数组实现,支持随机访问。
    • LinkedList基于链表实现,支持高效的插入和删除操作。
Set(集)
  • Set是不允许重复元素的集合,不保证元素的顺序。
  • 常见的实现类有HashSet、TreeSet和LinkedHashSet。
    • HashSet基于哈希表实现,具有快速查找的特性。
    • TreeSet基于红黑树实现,提供了有序的集合。
    • LinkedHashSet继承自HashSet,但保留了元素的插入顺序。
Queue(队列)
  • Queue是一种先进先出(FIFO)的数据结构,常用于任务调度等场景。
  • 常见的实现类有LinkedList,PriorityQueue,PriorityBlockingQueue。
    • LinkedList 实现一个先进先出的队列。
    • PriorityQueue 实现了一个优先队列:从队首获取元素时,总是获取优先级最高的元素。非阻塞、非线程安全、无边界。
    • PriorityBlockingQueue:支持优先级排序的无边界阻塞队列实现类,阻塞、线程安全、无边界。
Deque(双端队列):
  • Deque是一种同时支持在两端进行插入和删除操作的队列,可以作为栈使用。
  • 常见的实现类有ArrayDeque,LinkedList,ConcurrentLinkedDeque。
    • ArrayDeque是基于动态数组实现的双端队列,适用于栈(LIFO)和队列(FIFO)两种场景。
    • LinkedList实现了Deque接口,基于双向链表,可用作队列、双端队列、栈,支持所有List接口。
    • ConcurrentLinkedDeque是一个基于链表的无界线程安全双端队列,并发操作高效,适用于多线程环境。基于CAS(Compare-And-Swap)算法实现。

Map 体系

Map接口表示键值对的集合,不允许重复的键,但允许重复的值。
  • 其主要实现类包含: HashMap,LinkedHashMap,HashTable,TreeMap。
  • HashMap基于哈希表的实现,允许null键和null值。提供常数时间复杂度的基本操作(如插入、删除和访问),但不保证顺序。非线程安全,适用于单线程环境。
  • LinkedHashMap继承自HashMap,并且通过双向链表维护插入顺序。除了具有HashMap的所有特性,还维护了键值对的插入顺序或访问顺序。非线程安全,适用于单线程环境。
  • HashTable基于哈希表的实现,类似于HashMap,但不允许null键和null值。所有方法都是同步的,因此是线程安全的,但性能相对较低。线程安全,适用于多线程环境。
  • TreeMap基于红黑树实现的有序映射,键值对按键的自然顺序或通过提供的Comparator进行排序。提供O(log n)时间复杂度的基本操作,键值对是有序的,非线程安全,适用于单线程环境。
QA环节:
1、除了以上的类,还有其他的类吗?
答:有很多其他的类,如果一些复杂的功能以上类无法满足,除了自己实现之外,可参考官网文档寻找其他类:Java Platform, Standard Edition 8 API Specification—https://docs.oracle.com/javase/8/docs/api/
2、选择基础类时,是否需要关注线程安全?
答:对于无需考虑多线程的情况下,优先选择非线程安全,因为其性能较好。

原创文章,作者:guozi,如若转载,请注明出处:https://www.sudun.com/ask/90881.html

Like (0)
guozi的头像guozi
Previous 2024年6月7日
Next 2024年6月7日

相关推荐

  • 云服务器如何影响网站建设现状?

    云服务器如何影响网站建设现状?这是一个备受关注的话题,随着互联网的发展,云服务器已经成为了不可或缺的一部分。它不仅可以提供稳定可靠的服务,还具备许多优势和特点。那么,什么是云服务器…

    行业资讯 2024年3月20日
    0
  • 如何利用天津seo提升网站排名?

    你是否想知道如何利用天津SEO提升你的网站排名?或许你对天津SEO一无所知,但它却是当今云服务器行业中不可或缺的一部分。它能帮助你的网站获得更多曝光和流量,从而提高销售额。那么,什…

    行业资讯 2024年3月23日
    0
  • 温州网站公司如何选择?

    温州网站公司,这个词在当今的网络世界中已经不再陌生。随着互联网的发展,越来越多的企业开始意识到拥有一个高质量的网站对于企业发展的重要性。但是如何选择一家适合自己的温州网站公司呢?这…

    行业资讯 2024年3月28日
    0
  • 如何成为湛江火车站的站长?

    湛江火车站,作为广东省的重要交通枢纽,每天都迎来大量的旅客。而站长,作为火车站的管理者和领导者,也因此成为了这座城市中备受瞩目的职业。那么,你是否也对如何成为湛江火车站的站长充满了…

    行业资讯 2024年4月13日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注