Java中的集合

Java中的集合

java.util 包中的集合

Java 集合框架提供了各种集合类,用于存储和管理对象。以下是 Java 集合框架中常见的集合类:

  • List 接口表示一个有序的集合,其中的元素可以重复。List 接口有以下实现类:

    • ArrayList:动态数组,可以根据需要自动调整大小。
    • LinkedList:由节点组成的链表结构,适用于频繁的插入和删除操作。
    • Vector:线程安全的动态数组,可以根据需要自动调整大小。
  • Set 接口表示一个无序的集合,其中的元素不能重复。Set 接口有以下实现类:

    • HashSet:基于哈希表实现的集合,不允许重复元素。
    • TreeSet:基于红黑树实现的有序集合,按照自然顺序或自定义比较器进行排序。
  • Map 接口表示一个键值对映射,其中的键是唯一的。Map 接口有以下实现类:

    • HashMap:基于哈希表实现的键值对映射,使用键来快速查找值。
    • TreeMap:基于红黑树实现的有序键值对映射,按照键的自然顺序或自定义比较器进行排序。
    • LinkedHashMap:基于哈希表和双向链表实现的有序键值对映射,保持插入顺序。
  • Queue 接口表示一个先进先出(FIFO)的队列。Queue 接口有以下实现类:

    • LinkedList:由节点组成的链表结构,可以根据需要自动调整大小。
    • PriorityQueue:基于堆实现的队列,元素按照优先级顺序进行排序。
  • Deque 接口表示一个双端队列,可以从两端插入和删除元素。Deque 接口有以下实现类:

    • LinkedList:由节点组成的链表结构,可以根据需要自动调整大小。
    • ArrayDeque:基于数组实现的双端队列,可以根据需要自动调整大小。

这些集合类都位于 Java 的 java.util 包中。您可以根据具体的需求选择适合的集合类。

Guava 中的集合类和接口

Guava 中的集合类提供了许多实用的功能和扩展,以下是一些常见的 Guava 集合类:

  1. ImmutableList:不可变的列表,一旦创建就不能被修改。
  2. ImmutableSet:不可变的集合,不允许重复元素。
  3. ImmutableMap:不可变的映射,提供了键值对的映射关系。
  4. ImmutableMultiset:不可变的多重集合,允许元素重复。
  5. ImmutableSortedSet:不可变的有序集合,按照自然顺序或自定义比较器排序。
  6. ImmutableTable:不可变的表格,提供了二维的行列映射。
  7. Multimap:一个键可以映射到多个值的集合。
  8. BiMap:一个键和值可以互相映射的集合。
  9. Table:一个二维的键值对映射。
  10. RangeSet:表示连续范围的集合,可以进行范围操作。
  11. RangeMap:将连续范围映射到值的集合。

在 Guava 中,除了集合类,还有一些集合接口可供使用。以下是一些常见的 Guava 集合接口:

  1. Multimap:一个键可以映射到多个值的集合接口。它扩展了 Java 标准库中的 Map 接口,允许一个键对应多个值。

  2. BiMap:一个键和值可以互相映射的集合接口。它提供了双向的映射,既可以通过键查找值,也可以通过值查找键。

  3. Table:一个二维的键值对映射接口。它类似于一个行列表格,可以通过行和列的组合来查找和操作值。

  4. RangeSet:表示连续范围的集合接口。它可以用来管理和操作连续的数值范围,例如整数范围或日期范围。

  5. RangeMap:将连续范围映射到值的集合接口。它可以用来管理和操作连续范围的映射关系。

Apache Commons Collections 中的集合类和接口

Apache Commons Collections 是一个开源的 Java 库,它提供了许多常用的集合类和接口。以下是一些常见的集合类和接口:

集合类:

  • Bag:一个可重复元素的集合。
  • BidiMap:一个双向映射的集合。
  • BitSet:一个位集合。
  • CircularFifoBuffer:一个循环缓冲区。
  • CursorableLinkedList:一个可以进行游标操作的链表。
  • DualHashBidiMap:一个双向映射的哈希表。
  • EnumMap:一个基于枚举类型的映射。
  • FixedSizeList:一个固定大小的列表。
  • FixedSizeMap:一个固定大小的映射。
  • FixedSizeSet:一个固定大小的集合。
  • HashBag:一个基于哈希表的可重复元素的集合。
  • LazyList:一个延迟计算的列表。
  • LinkedMap:一个基于链表的映射。
  • LinkedSet:一个基于链表的集合。
  • LRUMap:一个基于最近最少使用算法的映射。
  • MultiHashMap:一个允许多个值映射到同一个键的映射。
  • MultiValueMap:一个允许多个值映射到同一个键的映射。
  • PredicatedCollection:一个带有谓词验证的集合。
  • PredicatedList:一个带有谓词验证的列表。
  • PredicatedMap:一个带有谓词验证的映射。
  • PredicatedSet:一个带有谓词验证的集合。
  • PriorityQueue:一个优先级队列。
  • ReferenceMap:一个基于引用类型的映射。
  • SequencedHashMap:一个基于链表的有序映射。
  • SetUniqueList:一个同时保持列表和集合特性的列表。
  • SingletonList:一个只包含一个元素的列表。
  • SingletonMap:一个只包含一个键值对的映射。
  • SingletonSet:一个只包含一个元素的集合。
  • SynchronizedBag:一个线程安全的可重复元素的集合。
  • SynchronizedCollection:一个线程安全的集合。
  • SynchronizedList:一个线程安全的列表。
  • SynchronizedMap:一个线程安全的映射。
  • SynchronizedSet:一个线程安全的集合。
  • TransformedBag:一个对元素进行转换的集合。
  • TransformedList:一个对元素进行转换的列表。
  • TransformedMap:一个对键值对进行转换的映射。
  • TransformedSet:一个对元素进行转换的集合。
  • TreeBag:一个基于红黑树的可重复元素的集合。
  • TypedCollection:一个带有类型限制的集合。
  • TypedMap:一个带有类型限制的映射。
  • TypedSet:一个带有类型限制的集合。
  • UnboundedFifoBuffer:一个无界缓冲区。
  • UnmodifiableBidiMap:一个不可修改的双向映射。
  • UnmodifiableCollection:一个不可修改的集合。
  • UnmodifiableList:一个不可修改的列表。
  • UnmodifiableMap:一个不可修改的映射。
  • UnmodifiableSet:一个不可修改的集合。

集合接口:

  • Bag:一个可重复元素的集合。
  • BidiMap:一个双向映射的集合。
  • Closure:一个执行操作的接口。
  • CollectionUtils:一个用于操作集合的工具类。
  • ExtendedProperties:一个扩展属性的接口。
  • Factory:一个用于创建对象的接口。
  • IterableMap:一个可迭代的映射接口。
  • KeyValue:一个键值对的接口。
  • ListIterator:一个列表迭代器的接口。
  • ListUtils:一个用于操作列表的工具类。
  • MapIterator:一个映射迭代器的接口。
  • OrderedBidiMap:一个有序的双向映射接口。
  • OrderedIterator:一个有序迭代器的接口。
  • OrderedMap:一个有序的映射接口。
  • Predicate:一个谓词接口。
  • PriorityQueue:一个优先级队列接口。
  • ResettableIterator:一个可重置的迭代器接口。
  • SequencedMap:一个有序的映射接口。
  • SetUtils:一个用于操作集合的工具类。
  • SortedBag:一个有序的可重复元素的集合接口。
  • Transformer:一个转换对象的接口。
  • UnboundedFifoBuffer:一个无界缓冲区接口。

Java Concurrent 包中的集合类和接口

Java Concurrent 包提供了以下集合类:

  • ConcurrentHashMap:线程安全的哈希表实现,用于存储键值对。
  • ConcurrentSkipListMap:线程安全的跳表实现的有序映射。
  • ConcurrentSkipListSet:线程安全的跳表实现的有序集合。
  • CopyOnWriteArrayList:线程安全的动态数组实现,支持并发读取。
  • CopyOnWriteArraySet:线程安全的集合实现,支持并发读取。
  • LinkedBlockingQueue:线程安全的阻塞队列实现,支持生产者-消费者模式。
  • ArrayBlockingQueue:线程安全的有界阻塞队列实现。
  • ConcurrentLinkedQueue:线程安全的非阻塞队列实现。
  • LinkedTransferQueue:线程安全的链式传输队列实现。
  • PriorityBlockingQueue:线程安全的优先级阻塞队列实现。
  • DelayQueue:线程安全的延迟队列实现。
  • SynchronousQueue:线程安全的同步队列实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/180455.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能_机器学习053_支持向量机SVM目标函数推导_SVM条件_公式推导过程---人工智能工作笔记0093

然后我们再来看一下支持向量机SVM的公式推导情况 来看一下支持向量机是如何把现实问题转换成数学问题的. 首先我们来看这里的方程比如说,中间的黑线我们叫做l2 那么上边界线我们叫l1 下边界线叫做l3 如果我们假设l2的方程是上面这个方程WT.x+b = 0 那么这里 我们只要确定w和…

<Linux> 文件理解与操作

目录 前言: 一、关于文件的预备知识 二、C语言文件操作 1. fope 2. fclose 3. 文件写入 3.1 fprintf 3.2 snprintf 三、系统文件操作 1. open 2. close 3. write 4. read 四、C文件接口与系统文件IO的关系 五、文件描述符 1. 理解文件描述符 2. 文…

时延抖动和通信的本质

先从网络时延抖动的根源说起。 信息能否过去取决于信道容量,而信道利用率则取决于编码。这是香农定律决定的。 考虑到主机处理非常快,忽略处理时延,端到端时延就是信息传播时延,但现实中通信信道利用率非常不均匀,统…

一则 MongoDB 副本集迁移实操案例

文中详细阐述了通过全量 增量 Oplog 的迁移方式,完成一套副本集 MongoDB 迁移的全过程。 作者:张然,DBA 数据库技术爱好者~ 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 本文约 900…

python炒股自动化(1),量化交易接口区别

要实现股票量化程序化自动化,就需要券商提供的API接口,重点是个人账户小散户可以申请开通,上手要简单,接口要足够全面,功能完善,首先,第一步就是要找对渠道和方法,这里我们不讨论量化…

linux 内核等待队列

等待队列在Linux内核中用来阻塞或唤醒一个进程,也可以用来同步对系统资源的访问,还可以实现延迟功能 在软件开发中任务经常由于某种条件没有得到满足而不得不进入睡眠状态,然后等待条件得到满足的时候再继续运行,进入运行状态。这…

网络安全--基于Kali的网络扫描基础技术

文章目录 1. 标准ICMP扫描1.1使用Ping命令1.1.1格式1.1.2实战 1.2使用Nmap工具1.2.1格式1.2.2实战1.2.2.1主机在线1.2.2.2主机不在线 1.3使用Fping命令1.3.1格式1.3.2实战 2. 时间戳查询扫描2.1格式2.2实战 3. 地址掩码查询扫描3.1格式3.2实战 2. TCP扫描2.1TCP工作机制2.2TCP …

MySQL 索引类型

什么是索引? 索引是一种用于提高数据库查询性能的数据结构。它是在表中一个或多个列上创建的,可以加快对这些列的数据检索速度。 索引的作用是通过创建一个额外的数据结构,使得数据库可以更快地定位和访问数据。当执行查询语句时&#xff0c…

【数据库设计和SQL基础语法】--SQL语言概述--SQL的基本结构和语法规则(一)

一、SQL的基本结构 2.1 SQL语句的组成要素 SQL语句的组成要素 关键字(Keywords): 定义:SQL语句的基本操作命令,表示要执行的动作。例子:SELECT、INSERT、UPDATE、DELETE等。 标识符(Identifiers&#xf…

位运算总结

文章目录 🍈1. 基础位运算🍌2. 给一个数n,确定它的二进制表示中的第x位是0还是1🍏3. 将一个数n的二进制表示的第x位修改成1🍓4. 将一个数的n的二进制表示的第x位修改成0🥔5. 位图的思想🫒6. 提前…

医疗智能化:人工智能的助力与隐患

文章目录 引言:积极影响风险和挑战 结尾: 引言: 医疗领域正处于人工智能技术革新的前沿。人工智能的涌现为医疗保健带来了前所未有的变革,同时也潜藏着一系列积极影响和潜在挑战。探索人工智能在医疗领域中的影响将有助于我们更深…

医保移动支付程序开发

作为公司最苦命的开发,年初接到任务开发医保移动支付程序(微信小程序和支付宝小程序),为医疗机构提供线上医保结算。好家伙,我一看解压后资料大于一个G,内心无比的惊慌。 一、技术流程图 图太大了显示不全需…

0-1背包的初始化问题

题目链接 这道题的状态转移方程比较易于确定。dp[i][j]表示能放前i个物品的情况下,容量为j时能放物品的数量(这道题歌曲数量对应物品数量,容量对应时间)。 技巧(收获) 二维dp数组可以视情况优化为一维dp数组…

【创建一个组件并通过npm让其他人安装和调用】

创建一个组件并通过npm让其他人安装和调用 步骤一:创建一个组件步骤二:准备发布步骤三:注册npm账号并登录步骤四:发布组件步骤五:安装和使用组件 步骤一:创建一个组件 在本地创建一个新的文件夹来存放你的组…

Linux——vim编辑文件时——.swp文件解决方案

test.cpp样例 当我们vim test.cpp进入编辑文件。 却忘记了保存退出 再次进入就会出现一下画面 当你摁下Enter键位 出现以下几个选项 O——是只读不写 E——是正常打开文件但不会载入磁盘内容 R——覆盖——是加载存储磁盘的文件(当我们忘记保存时,系统会自动帮我…

事件代理?

1.什么是事件代理? 事件代理也叫事件委托,只指定一个事件处理程序,就可以管理某一类型得事件。 可以简单理解为,事件代理就是将本应该绑定子元素事件绑定给父元素代理。它的优点就是:减少事件得执行,减少浏…

CentOS 7 部署 MariaDB 的 2 种方法

有两种安装 MariaDB 服务器的方法。您可以安装 CentOS 7 存储库中可用的默认版本,也可以通过手动添加 MariaDB 存储库来安装最新版本。 如果安装过MariaDB或MySQL,使用以下命令彻底删除它们: yum remove mariadb* yum remove mysql* 方法一: 使用 Yum…

[ Vue3 ] 三种方式实现组件数据双向绑定

Vue3 三种方式实现组件数据双向绑定 在 Vue 中,组件数据双向绑定是一项非常重要的特性,它使得我们能够轻松地在组件中处理数据的变化并将其同步到视图 比如我们想要在父组件中修改数据能够同步给子组件,并且子组件修改数据也能同步给父组件…

Make Pixels Dance: High-Dynamic Video Generation论文解析

高动态视频生成的新进展 Make Pixels Dance: High-Dynamic Video Generation高动态视频生成的新进展前言视频生成模式摘要论文十问实验数据集定量评估指标消融研究 训练和推理技巧训练技术推理技术 更多的应用 Make Pixels Dance: High-Dynamic Video Generation 高动态视频生…

VBA技术资料MF87:创建固定顺序名称的一组文件夹

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。我的教程一共九套,分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的入门,到…