当前位置:首页 > 科技  > 软件

Java 集合框架超详细!

来源: 责编: 时间:2023-10-10 18:32:12 235观看
导读简介Java 提供了用于管理和操作数据的接口。这称为 Java 集合框架 (JCF)。由于它根据要存储和管理的数据的类型和特征提供各种形式和实现,让我们根据需要的情况应用和使用它。JCFJCF是指一个数据集接口框架,它统称为 Co

0Wz28资讯网——每日最新资讯28at.com

简介

Java 提供了用于管理和操作数据的接口。0Wz28资讯网——每日最新资讯28at.com

这称为 Java 集合框架 (JCF)。0Wz28资讯网——每日最新资讯28at.com

由于它根据要存储和管理的数据的类型和特征提供各种形式和实现,0Wz28资讯网——每日最新资讯28at.com

让我们根据需要的情况应用和使用它。0Wz28资讯网——每日最新资讯28at.com

JCF

0Wz28资讯网——每日最新资讯28at.com

JCF是指一个数据集接口框架,它统称为 Collection 和 Map 接口。0Wz28资讯网——每日最新资讯28at.com

一组数据被定义为 Collection ,它扩展了 Iterable 接口。0Wz28资讯网——每日最新资讯28at.com

Iterable 实现了一个接口结构,允许访问属于集合的元素。0Wz28资讯网——每日最新资讯28at.com

this 的访问被定义为通过 Iterator 访问。0Wz28资讯网——每日最新资讯28at.com

Collection 提供一维数据管理。0Wz28资讯网——每日最新资讯28at.com

具有代表性的Collection实现接口如下:0Wz28资讯网——每日最新资讯28at.com

List :保证顺序,不保证唯一性(即可能出现重复)。0Wz28资讯网——每日最新资讯28at.com

Queue:实现了一个通用的队列类型结构。0Wz28资讯网——每日最新资讯28at.com

Set :不保证顺序,但保证唯一性(不重复)。0Wz28资讯网——每日最新资讯28at.com

Map: 具有二维(键值)结构。0Wz28资讯网——每日最新资讯28at.com

List

一个索引的、有序的集合。0Wz28资讯网——每日最新资讯28at.com

典型的实现类是:0Wz28资讯网——每日最新资讯28at.com

  • ArrayList

每个数据都附有索引(顺序),通过它可以快速访问。0Wz28资讯网——每日最新资讯28at.com

但是,在删除或插入中间数据的情况下,整个数据结构都会被修改。0Wz28资讯网——每日最新资讯28at.com

因此,内存效率低下。0Wz28资讯网——每日最新资讯28at.com

  • LinkedList

为每个数据生成一个点,并使用该点组成每个数据。0Wz28资讯网——每日最新资讯28at.com

当删除或插入发生时,内存效率低下最小化,但搜索数据时时间很慢。0Wz28资讯网——每日最新资讯28at.com

  • Vector

线程安全得到保证,在访问线程时通过加锁来保证线程同步。0Wz28资讯网——每日最新资讯28at.com

它用于保证在多线程环境中的稳定值。0Wz28资讯网——每日最新资讯28at.com

  • Stack

这是一个典型队列结构的数据结构。0Wz28资讯网——每日最新资讯28at.com

Set

是一种不保证顺序,保证唯一性的数据结构。0Wz28资讯网——每日最新资讯28at.com

也就是说,它是一个不重叠的无序数据结构。0Wz28资讯网——每日最新资讯28at.com

HashSet : 最纯粹的集合数据结构,完全随机排序。0Wz28资讯网——每日最新资讯28at.com

通过覆盖equals和hashCode,区分对象,从根本上防止重复存储。0Wz28资讯网——每日最新资讯28at.com

LinkedHashSet:这是一个Set数据结构,按照输入顺序存储数据。0Wz28资讯网——每日最新资讯28at.com

它继承并实现了HashSet,按插入顺序管理数据。0Wz28资讯网——每日最新资讯28at.com

TreeSet:是一种内部按升序排序的Set数据结构。0Wz28资讯网——每日最新资讯28at.com

添加和删除数据需要时间,但搜索和排序非常好(当然因为它是树结构...)0Wz28资讯网——每日最新资讯28at.com

Map

它是一种以键值格式以二维形式管理数据的数据结构。0Wz28资讯网——每日最新资讯28at.com

导入数据时,一种序列是键,它所在的列是值,所以你可以把它看成是一个即时的、动态的小型数据库。0Wz28资讯网——每日最新资讯28at.com

基本上不保证数据标识符Key的顺序。0Wz28资讯网——每日最新资讯28at.com

  • HashMap:是一种纯Map数据结构,数据以完全随机的顺序存储。
  • TreeMap:它是一种Map数据结构,其中的键在内部进行了排序。

插入删除操作速度快,特点是自动排序。0Wz28资讯网——每日最新资讯28at.com

  • HashTable:线程安全的同步方法组合。

因此,它是一种用于在多线程环境下保证稳定值的数据结构。0Wz28资讯网——每日最新资讯28at.com

  • LinkedHashMap:它是一种Map数据结构,按照输入的顺序存储数据。

HashMap 是随机输出和有序结构,而 LinkedHashMap 保持插入顺序。0Wz28资讯网——每日最新资讯28at.com

Queue

它是一种数据结构,对应于队列数据结构的一般概念。0Wz28资讯网——每日最新资讯28at.com

从尾巴到超市结账的方法(排队)0Wz28资讯网——每日最新资讯28at.com

计算方式与头部(出队)结构相同。0Wz28资讯网——每日最新资讯28at.com

  • AbstractQueue:最纯粹的队列数据结构。

它是第一个为优先级队列构造的队列对象,允许将其声明和实现为原始队列。0Wz28资讯网——每日最新资讯28at.com

与一般通过中间数据结构的其他数据结构不同,它实现了 AbstractCollection 类,这是 Collection 接口的抽象类。0Wz28资讯网——每日最新资讯28at.com

  • LinkedList:这是一个使用链表实现的队列数据结构。

这是一个用于实现通用队列的实现类。0Wz28资讯网——每日最新资讯28at.com

  • ArrayDeque:这是一个作为甲板数据结构实现的队列数据结构。

可以在前端(head)和尾部(tail)同时实现出队(删除)和入队(插入)操作。0Wz28资讯网——每日最新资讯28at.com

  • PriorityQueue:这是一个优先级队列数据结构。

通过为每个数据实现优先级来排队处理任务0Wz28资讯网——每日最新资讯28at.com

  • BlockingQueue:这是为确保线程安全而实现的数据结构。

如果两个线程同时访问出队任务,就会出现异常。0Wz28资讯网——每日最新资讯28at.com

为了解决这个问题,通过 Concurrent 包实现并提供了阻塞的概念。0Wz28资讯网——每日最新资讯28at.com

它通过线程等待通用队列的 put、offer、take、poll、peek 来工作。0Wz28资讯网——每日最新资讯28at.com

换句话说,如果队列在条目之间饱和或为空,或者如果另一个线程正在访问它,则线程等待并在它被释放时执行命令。0Wz28资讯网——每日最新资讯28at.com

特别是,可以使用一种称为 drainTo(Collection) 的方法,放入该集合的所有元素 (c)0Wz28资讯网——每日最新资讯28at.com

可以使用下面两种来实现:0Wz28资讯网——每日最新资讯28at.com

  • ArrayBlockingQueue
  • LinkedBlockingQueue

Deque(双端队列)

扩展 Queue 接口的概念。0Wz28资讯网——每日最新资讯28at.com

一个普通的队列可以从Head取数据(dequeue),从tail放数据(enqueue)。0Wz28资讯网——每日最新资讯28at.com

实现方式:0Wz28资讯网——每日最新资讯28at.com

  • linkedList:基于 LinkedList 的索引数据结构。

它是一种允许基本甲板构造的实现。0Wz28资讯网——每日最新资讯28at.com

  • ArrayDeque:这是一种用于构建索引的数据结构。

此实现由 Array 支持,因此非常高效,因为它会立即移动而无需额外的内存引用。0Wz28资讯网——每日最新资讯28at.com

  • LinkedBlockingDeque

提供允许单个线程一次只能访问一个(阻塞)的功能。0Wz28资讯网——每日最新资讯28at.com

  • ConcurrentLinkedDeque:保证并行线程安全的索引结构。

正如Concurrent这个词所说的那样,它是一种保证ThreadSafe的保证数据结构。0Wz28资讯网——每日最新资讯28at.com

由于是Linked数据结构,所以具有Linked的大部分优点和缺点。0Wz28资讯网——每日最新资讯28at.com

Stack

它是一种实现常用栈概念的数据结构。0Wz28资讯网——每日最新资讯28at.com

既然是继承了遗留的Vector构建的数据结构,那么Thread Safe自然是有保证的,0Wz28资讯网——每日最新资讯28at.com

由于并发访问线程固定为单一数据结构,不适合作为多线程环境下的数据结构。0Wz28资讯网——每日最新资讯28at.com

  • Stack:这是一种常用的栈数据结构。

堆中使用的概念被实现为方法。0Wz28资讯网——每日最新资讯28at.com

Iterator(迭代器)

Iterator 是一个接口,它指定了一个可访问由 Collection 扩展的 Iterable 的接口。0Wz28资讯网——每日最新资讯28at.com

该实现可以访问 Collection 并检索其元素。0Wz28资讯网——每日最新资讯28at.com

Iterable(可迭代对象)

简单来说,For语句可以操作的数据结构是Iterable数据结构的一种实现。0Wz28资讯网——每日最新资讯28at.com

换句话说,如果目标数据可以通过迭代(for,while)访问,它扩展了Iterable。0Wz28资讯网——每日最新资讯28at.com

  • 任何 Iterable 扩展接口实现

当然...扩展 Iterable 的实现是 Iterable 的目标。0Wz28资讯网——每日最新资讯28at.com

总结

以上内容是很基础的集合知识,帮助我们平时开发的时候更正确的去使用集合结构以及避免BUG困扰。这些知识需要牢记,值得反复查阅。0Wz28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-12746-0.htmlJava 集合框架超详细!

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 面试中如何答好:CAS

下一篇: PixiJS 源码解读:绘制矩形的渲染过程讲解

标签:
  • 热门焦点
  • K60至尊版刚预热 一加Ace2 Pro正面硬刚

    K60至尊版刚预热 一加Ace2 Pro正面硬刚

    Redmi这边刚如火如荼的宣传了K60 Ultra的各种技术和硬件配置,作为竞品的一加也坐不住了。一加中国区总裁李杰发布了两条微博,表示在自家的一加Ace2上早就已经采用了和PixelWo
  • 7月安卓手机性能榜:红魔8S Pro再夺榜首

    7月安卓手机性能榜:红魔8S Pro再夺榜首

    7月份的手机市场风平浪静,除了红魔和努比亚带来了两款搭载骁龙8Gen2领先版处理器的新机之外,别的也想不到有什么新品了,这也正常,通常6月7月都是手机厂商修整的时间,进入8月份之
  • 十个可以手动编写的 JavaScript 数组 API

    十个可以手动编写的 JavaScript 数组 API

    JavaScript 中有很多API,使用得当,会很方便,省力不少。 你知道它的原理吗? 今天这篇文章,我们将对它们进行一次小总结。现在开始吧。1.forEach()forEach()用于遍历数组接收一参
  • 一年经验在二线城市面试后端的经验分享

    一年经验在二线城市面试后端的经验分享

    忠告这篇文章只适合2年内工作经验、甚至没有工作经验的朋友阅读。如果你是2年以上工作经验,请果断划走,对你没啥帮助~主人公这篇文章内容来自 「升职加薪」星球星友 的投稿,坐
  • 一篇聊聊Go错误封装机制

    一篇聊聊Go错误封装机制

    %w 是用于错误包装(Error Wrapping)的格式化动词。它是用于 fmt.Errorf 和 fmt.Sprintf 函数中的一个特殊格式化动词,用于将一个错误(或其他可打印的值)包装在一个新的错误中。使
  • 为什么你不应该使用Div作为可点击元素

    为什么你不应该使用Div作为可点击元素

    按钮是为任何网络应用程序提供交互性的最常见方式。但我们经常倾向于使用其他HTML元素,如 div span 等作为 clickable 元素。但通过这样做,我们错过了许多内置浏览器的功能。
  • 最“俊美”淘宝卖家,靠直播和短视频圈粉,上架秒光,年销3000万

    最“俊美”淘宝卖家,靠直播和短视频圈粉,上架秒光,年销3000万

    来源 | 电商在线文|易琬玉编辑|斯问受访店铺:Ringdoll戒之人形图源:微博@御座的黄山、“Ringdoll戒之人形”淘宝店铺有关外貌的评价,黄山已经听累了。生于1985年的他,哪
  • 由于成本持续增加,笔记本产品价格预计将明显上涨

    由于成本持续增加,笔记本产品价格预计将明显上涨

    根据知情人士透露,由于材料、物流等成本持续增加,笔记本产品价格预计将在2021年下半年有明显上涨。进入6月下旬以来,全球半导体芯片缺货情况加剧,显卡、处理器
  • Meta盲目扩张致超万人被裁,重金押注元宇宙而前景未明

    Meta盲目扩张致超万人被裁,重金押注元宇宙而前景未明

    图片来源:图虫创意日前,Meta创始人兼CEO 马克·扎克伯发布公开信,宣布Meta计划裁员超11000人,占其员工总数13%。他公开承认了自己的预判失误:“不仅
Top