java所有集合的相互关系是什么

news/2024/9/22 13:23:14

Java集合框架是一个设计精良、功能强大的工具集,用于存储和操作对象集合。它大致分为以下几类,并且各类之间存在一定的层级关系和功能差异:

### 顶级接口(根接口)
1. **Collection**: 是最基础的集合接口,所有集合类都直接或间接实现了这个接口。它定义了基本的集合操作,如添加元素(`add(E element)`)、删除元素(`remove(Object o)`)、清空集合(`clear()`)、检查集合是否为空(`isEmpty()`)等。
   
2. **Map**: 专门用于存储键值对的接口,其中每个键映射到一个值。它定义了如获取值(`get(Object key)`), 添加键值对(`put(K key, V value)`), 删除映射(`remove(Object key)`)等操作。

### Collection的子接口
1. **List**: 有序集合,允许重复元素,可以通过索引访问元素。主要实现包括`ArrayList`, `LinkedList`, `Vector`。
   
2. **Set**: 无序集合,不允许重复元素。主要实现包括`HashSet`, `LinkedHashSet`, `TreeSet`。

List和Set的区别

### Map的子接口
- **SortedMap**: 保持键的排序(自然排序或自定义比较器排序)的Map。主要实现包括`TreeMap`。
- **NavigableMap**: 扩展了`SortedMap`,提供了更强大的导航功能,如返回子图、逆向视图等。`TreeMap`也实现了这个接口。

### 特殊用途的集合接口
- **Queue**: 表示一种先进先出(FIFO)的数据结构,主要实现包括`LinkedList`, `PriorityQueue`, `ArrayBlockingQueue`等。
- **Deque**: 双端队列,可以在两端进行插入和删除操作,主要实现包括`LinkedList`, `ArrayDeque`。
  
### 集合实现类
- **ArrayList**: 动态数组实现的List,随机访问快,增删慢。
- **LinkedList**: 双向链表实现的List和Queue,增删快,随机访问慢。
- **HashSet**: 基于哈希表实现的Set,无序,性能依赖于哈希码。
- **LinkedHashSet**: 维护插入顺序的HashSet。
- **TreeSet**: 基于红黑树实现的Set,自然排序或自定义排序。
- **HashMap**: 哈希表实现的Map,无序,高性能。
- **TreeMap**: 红黑树实现的Map,键有序。
- **EnumSet/EnumMap**: 专门用于枚举类型的Set和Map,高效且空间占用小。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

mysql 锁

1,介绍锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个…

Windows系统安装Jmeter教程

1、进入官网https://jmeter.apache.org/download_jmeter.cgi 选择与Jdk适配的版本下载:2、解压压缩包3、配置环境变量 进入到系统配置环境变量的界面:在下方的系统变量那里,新建变量:变量名为:JMETER_HOME 变量地址:Jmeter的安装路径 如图所示:4、运行JMETER 在JMeter的…

XeLaTeX 无法编译含有经过 pdfcrop 裁剪的 PDF 文件的文档

今天在写 LaTeX 文档时踩了个大坑,我在文档里插入了一个 PDF 图片之后文档无法编译了。 于是我去掉多余代码,做了一个最小工作示例: \documentclass{article} \usepackage{graphicx} \begin{document}\includegraphics{my_image.pdf}\end{document}就是这样一个简单的代码,…

Jenkins - [02] 安装部署

题记部分 一、Jenkins是什么Jenkins,原名Hudson,2011年改为现在的名字,它是一个开源的实现持续集成的软件工具。官网:https://www.jenkins.io/ 官网:https://www.jenkins.io/zh/ (中文)Jenkins能实时监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的…

OpenTelemetry agent 对 Spring Boot 应用的影响:一次 SPI 失效的

背景 前段时间公司领导让我排查一个关于在 JDK21 环境中使用 Spring Boot 配合一个 JDK18 新增的一个 SPI(java.net.spi.InetAddressResolverProvider) 不生效的问题。 但这个不生效的前置条件有点多:JDK 的版本得在 18+ SpringBoot3.x 还在额外再配合使用 -javaagent:opentel…

easyUI datagrid 数据不显示,tablebody 高度为0 的问题

如下图,接口请求回来数据,表头也显示出来了。 打开元素,可以看到table的bbody里面是有数据的,数据也渲染到了页面表格中,但是table的height为0。 排查以下问题:检查数据源格式是否正确,如是 JSON 数组还是符合 easyui 要求的对象。确保在 datagrid 初始化后正确触发数据…

shell重定向与变量

一、重定向与管道符 重定向 重定向:改变电脑的数据输出方向,默认是输出在屏幕上类型设备文件文件描述编号默认设备标准输入 /dev/stdin 0 键盘标准输出 /dev/stdout 1 显示器标准错误输出 /dev/stderr 2 显示器交互式硬件设备标准输入:从该设备接收用户输入的数据标准输出:…

【最新】windows电脑FFmpeg安装教程手把手详解

【最新】windows电脑FFmpeg安装教程手把手详解 写在最前 一、下载&解压 二、配置环境变量 1、配置系统环境变量 三、验证 写在最前 FFmpeg是一个免费的开源程序库,一个命令行工具软件,专门用来编辑处理各种音视频或图像。本文以WINDOW 64位操作系统为例演示。 一、下载&a…