java常用数据结构及其接口

Java 提供了丰富的集合框架及其数据结构,每个结构和接口都有独特的功能。以下是一些常用的数据结构和接口,以及它们的关键方法:

### 接口及其实现

1. **List 接口**
   - 实现类:`ArrayList`、`LinkedList`、`Vector`
   - 关键方法:
     - `add(E e)`
     - `get(int index)`
     - `remove(int index)`
     - `size()`
     - `contains(Object o)`

2. **Set 接口**
   - 实现类:`HashSet`、`LinkedHashSet`、`TreeSet`
   - 关键方法:
     - `add(E e)`
     - `remove(Object o)`
     - `contains(Object o)`
     - `size()`
     - `isEmpty()`

3. **Queue 接口**
   - 实现类:`LinkedList`、`PriorityQueue`
   - 关键方法:
     - `offer(E e)`
     - `poll()`
     - `peek()`
     - `remove()`
     - `element()`

4. **Map 接口**
   - 实现类:`HashMap`、`LinkedHashMap`、`TreeMap`
   - 关键方法:
     - `put(K key, V value)`
     - `get(Object key)`
     - `remove(Object key)`
     - `containsKey(Object key)`
     - `containsValue(Object value)`
     - `keySet()`
     - `values()`
     - `entrySet()`

5. **Deque 接口**
   - 实现类:`LinkedList`、`ArrayDeque`
   - 关键方法:
     - `addFirst(E e)`
     - `addLast(E e)`
     - `removeFirst()`
     - `removeLast()`
     - `peekFirst()`
     - `peekLast()`
     - `offerFirst(E e)`
     - `offerLast(E e)`

### 数据结构简介

- **ArrayList**:动态数组,支持快速随机访问,但在插入和删除操作时可能较慢。
- **LinkedList**:双向链表,适合频繁插入和删除操作。
- **HashSet**:不允许重复元素,无序。
- **TreeSet**:有序集合,使用红黑树实现。
- **HashMap**:键值对存储,允许快速查找。
- **LinkedList(作为 Queue 和 Deque)**:同时支持队列和双端队列操作。
- **PriorityQueue**:基于优先级的队列,元素根据自然排序或比较器排序。

这些数据结构和接口在不同场合各有适用,可以根据需要选择合适的数据结构。

当然,以下是对每个关键方法的解释:

### List 接口

1. **`add(E e)`**:
   - 将元素 `e` 添加到列表末尾。

2. **`get(int index)`**:
   - 返回列表中指定位置的元素。

3. **`remove(int index)`**:
   - 移除列表中指定位置的元素,并返回该元素。

4. **`size()`**:
   - 返回列表中的元素数量。

5. **`contains(Object o)`**:
   - 如果列表中包含指定的元素,则返回 `true`。

### Set 接口

1. **`add(E e)`**:
   - 将元素 `e` 添加到集合中,若集合中已存在相同元素,则不改变集合并返回 `false`。

2. **`remove(Object o)`**:
   - 从集合中移除指定的元素 `o`。

3. **`contains(Object o)`**:
   - 如果集合中包含指定的元素,则返回 `true`。

4. **`size()`**:
   - 返回集合中的元素数量。

5. **`isEmpty()`**:
   - 如果集合为空,返回 `true`。

### Queue 接口

1. **`offer(E e)`**:
   - 将元素 `e` 添加到队列的尾部,成功返回 `true`,失败返回 `false`。

2. **`poll()`**:
   - 移除并返回队列头部的元素,如果队列为空,返回 `null`。

3. **`peek()`**:
   - 返回队列头部的元素,但不移除,如果队列为空,返回 `null`。

4. **`remove()`**:
   - 移除并返回队列头部的元素,如果队列为空,抛出 `NoSuchElementException`。

5. **`element()`**:
   - 返回队列头部的元素,但不移除,如果队列为空,抛出 `NoSuchElementException`。

### Map 接口

1. **`put(K key, V value)`**:
   - 将指定的键和值的映射关系存入 Map 中,如果键已存在,将替换对应的值。

2. **`get(Object key)`**:
   - 返回 Map 中指定键对应的值,如果不存在,返回 `null`。

3. **`remove(Object key)`**:
   - 移除 Map 中指定键的条目,并返回对应的值。

4. **`containsKey(Object key)`**:
   - 如果 Map 包含指定的键,返回 `true`。

5. **`containsValue(Object value)`**:
   - 如果 Map 包含指定的值,返回 `true`。

6. **`keySet()`**:
   - 返回 Map 中所有键的集合。

7. **`values()`**:
   - 返回 Map 中所有值的集合。

8. **`entrySet()`**:
   - 返回 Map 中所有键值对条目的集合。

### Deque 接口

1. **`addFirst(E e)`**:
   - 将元素 `e` 添加到双端队列的头部。

2. **`addLast(E e)`**:
   - 将元素 `e` 添加到双端队列的尾部。

3. **`removeFirst()`**:
   - 移除并返回双端队列头部的元素。

4. **`removeLast()`**:
   - 移除并返回双端队列尾部的元素。

5. **`peekFirst()`**:
   - 返回双端队列头部的元素,但不移除,如果队列为空,返回 `null`。

6. **`peekLast()`**:
   - 返回双端队列尾部的元素,但不移除,如果队列为空,返回 `null`。

7. **`offerFirst(E e)`**:
   - 将元素 `e` 添加到双端队列的头部,成功返回 `true`,失败返回 `false`。

8. **`offerLast(E e)`**:
   - 将元素 `e` 添加到双端队列的尾部,成功返回 `true`,失败返回 `false`。

这些方法提供各种操作来管理元素的存储、检索和更新,适用于不同的数据结构场景。

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

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

相关文章

Manus在虚拟现实仿真模拟中的应用案例分享

Manus虚拟现实手套作为一种高精度的人机交互设备,在仿真模拟领域展现出了巨大的应用潜力。通过提供实时、准确的手指动作捕捉数据,Manus手套为多个行业带来了前所未有的仿真体验,推动了技术发展和应用创新。 技术特点 1. 高精度手指跟踪 Ma…

ensp中acl的使用

拓扑图及其要求如下 基础配置 检查此上R2配置错误,undo重新写 检查手写配置无误 按要求写配置 要求1完成 因为一个接口的入或者出方向上 只能调用一张acl表格,所以要求二照样在R1上面写 要求3

5. STM32之TIM实验--输出比较(PWM输出,电机,四轴飞行器,智能车,机器人)--(实验5:PWM驱动直流电机)

作者:Whappy,日期:2024.10.29,决战STM32 直流电机的控制就比较简单了,只有数据线和地线,正接正转,反接反转,为了方便,本实验采用H桥电路来控制电机的正反转,H桥电路也很简单,就是4个MOS管构成的2路推挽输出电路. 注:基本上大功率器件,单片机基本上是无法驱动的,都是要靠一部分…

Python基础知识汇总(建议收藏再观看)!

1.执行脚本的两种方式 Python a.py 直接调用Python解释器执行文件 chomd x a.py ./a.py #修改a.py文件的属性,为可执行,在用 ./ 执行a.py 文件 2、简述位、字节的关系 1bytes8bit ,2**8256,可以代表256中变化, 3、简述 ascii、unicode、…

Java中IO的高级操作

目录 缓冲流 缓冲字节输入流: 缓冲字节输出流: 缓冲字符输入流: 缓冲字符输出流: 转换流 转换流字符输入: 转换流字符输出: 练习案例: 打印流 字节打印流: 字符打印流&a…

Matlab高光谱遥感

原文链接:Matlab高光谱遥感https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247623643&idx5&sne4557ed43728f851140b100f42286988&chksmfa8da23ccdfa2b2a4d795bf4087f672faaa7082d1f52e046616ab7bf196a6eef89ea553d06b1&token1392391660&…

ssm+jsp663数学课程评价系统的设计与开发

博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不…

openssl-ec-chn命令手册

openssl-ec命令处理EC(Elliptic Curve,椭圆曲线)密钥。使密钥可以在各种形式之间转换,并打印出其组件。注意:OpenSSL使用“SEC 1:椭圆曲线密码学(Elliptic Curve Cryptography)”中指定的私钥格…

(JVM)深入JAVA底层 JVM(Java 虚拟机)!带你认识JVM、程序计数器、JVM栈和方法栈还有堆内存!看看JAVA针对这些内存空间都做了什么吧!

1. 什么是JVM java 二进制字节码的运行环境,简称:java 虚拟机(Java Virtual Machine) 2. 好处是什么 一次编写,到处运行自动内存管理,GC垃圾回收功能数组下标越界检查多态… 3. jdk、jre、jvm 4. 学习J…

OLAP平台架构演化历程

OLAP平台架构演化历程 0 导读 随着大数据的持续发展及数字化转型的兴起,大数据OLAP分析需求越来越迫切,不论是大型互联网企业,还是中小型传统企业,都在积极探索及实践OLAP引擎选型及平台架构建设,大数据技术的蓬勃发展…

Kaggle入门指南(Kaggle竞赛)

文章目录 Kaggle 入门指南1. Kaggle 的功能概述1.1 竞赛1.2 数据集1.3 学习与教程1.4 社区 2. 注册与设置2.1 创建账户2.2 完善个人资料 3. 探索数据集3.1 查找数据集3.2 下载数据集示例代码:加载数据集 3.3 数据预处理示例代码:数据预处理 4. 参与竞赛4…

docker 可用镜像服务地址(2024.10.31亲测可用)

1.错误 Error response from daemon: Get “https://registry-1.docker.io/v2/” 原因:镜像服务器地址不可用。 2.可用地址 编辑daemon.json: vi /etc/docker/daemon.json内容修改如下: {"registry-mirrors": ["https://…

TortoiseSVN小乌龟下载安装(Windows11)

目录 TortoiseSVN 1.14.7工具下载安装 TortoiseSVN 1.14.7 工具 系统:Windows 11 下载 官网:https://tortoisesvn.subversion.org.cn/downloads.html如图选 TortoiseSVN 1.14.7 - 64 位 下载完成 安装 打开 next,next Browse&#xf…

CAD图纸防泄密|哪些措施可以加密公司图纸?五个宝藏方法分享,2024必读!

在工程设计领域,CAD图纸作为企业的核心资产,其安全性至关重要。一旦图纸泄露,不仅可能给企业带来重大的经济损失,还可能损害企业的声誉和竞争力。 那么,怎么实现CAD图纸防泄密呢? 以下是五个CAD图纸防泄密…

Centos7安装最新版EMQX(v5.8.1)

引言 由于从centos停止维护,导致yum源不可用,好多方法安装都有问题,各种缺依赖;其实最简单就是换操作系统,Ubuntu,centos停止维护之后我们现在服务器基本上都是Ubuntu;而我的环境又不想再折腾,…

网络应用技术 实验二:交换机VLAN 应用(华为ensp)

目录 一、实验简介 二、实验目的 三、实验需求 四、实验拓扑 五、实验任务及要求 1、任务 1:在交换机上创建VLAN 并测试通信 2、任务 2:路由交换机实现VLAN 之间通信 六、实验步骤 1、完成任务 1 2、完成任务 2 一、实验简介 在交换机上配置 VLAN&#x…

数学期望和联合概率密度

数学期望的定义 数学期望是描述随机变量平均趋势的一个重要统计量。根据随机变量的类型(离散或连续),数学期望的定义有所不同。 离散型随机变量的数学期望: 若离散型随机变量 X X X取值为 x 1 , x 2 , … , x n , … x_1,x_2,\do…

Python基础学习(十)面向对象编程(基础)

代码获取:https://github.com/qingxuly/hsp_python_course 完结版:Python基础学习(完结版) 面向对象编程(基础) 类与对象 类与实例的关系 类与实例的关系示意图 快速入门—面向对象的方式解决养猫问题 …

.bixi勒索病毒来袭:如何防止文件加密与数据丢失?

导言 在网络威胁剧烈的今天,勒索病毒已成为企业和个人面临的重大安全挑战,其中虫洞勒索病毒习得高强度的加密手段和急剧传播的特性引起关注。一旦感染,就会加密关键数据并索要赎金,导致数据无法访问并带来巨大的财务损失。更为严…

OpenCV基础02_图像预处理

图像预处理 在计算机视觉和图像处理领域,图像预处理是一个重要的步骤,它能够提高后续处理(如特征提取、目标检测等)的准确性和效率。 OpenCV 提供了许多图像预处理的函数和方法,一些常见的图像预处理操作&#xff1a…