Java中常见的自带数据结构类

news2024/10/19 16:24:12

目录

一、ArrayList(动态数组)

特性

常用方法

二、LinkedList(双向链表)

特性

常用方法

三、ArrayDeque(双端队列) 

特性

常用方法

四、HashMap(哈希表)

特性

常用方法

五、TreeMap(红黑树)

特性

常用方法

六、HashSet(哈希表)

特性

常用方法

HashSet和HashMap的区别

数据结构和存储内容:

方法:

遍历方式:

七、TreeSet(红黑树)

特性

常用方法

TreeSet和TreeMap的区别 

存储内容不同:

遍历方式不同:

操作对象不同:

方法不同:

八、Stack(栈)

特性

常用方法

九、Queue(队列)

特性

常用方法

十、PriorityQueue(优先级队列)

特性

常用方法

十一、Deque(双端队列)

特性

常用方法


关山难越谁悲失路之人?萍水相逢尽是他乡之客

                                                                —— 24.10.19

一、ArrayList(动态数组)

ArrayList是 Java 中一个常用的动态数组实现类

特性

① 动态扩容:当向 ArrayList 添加元素导致容量不足时,它会自动增加内部数组的大小,以容纳更多的元素。

② 随机访问快:通过索引获取元素的时间复杂度为 O(1)

③ 插入和删除元素:中间位置插入或删除元素的时间复杂度为 O(n),因为需要移动后续元素。


常用方法

  • add(E element) 向列表末尾添加一个元素。
  • add(int index, E element) :在指定索引位置插入一个元素。
  • get(int index) :获取指定索引位置的元素。
  • remove(int index) :移除指定索引位置的元素。
  • remove(Object o) :移除指定的元素。
  • size() :返回列表中的元素个数。
  • clear() :清空列表。 
add(E element)    // 向列表末尾添加一个元素
add(int index, E element)    // 在指定索引位置插入一个元素
get(int index)    // 获取指定索引位置的元素
remove(int index)    // 移除指定索引位置的元素
remove(Object o)    // 移除指定的元素
size()    // 返回列表中的元素个数
clear()    // 清空列表

二、LinkedList(双向链表)

LinkedList 是 Java 中的一种常见数据结构

特性

1.底层数据结构是双向链表,每个节点包含数据以及指向前一个后一个节点的引用

2.插入和删除操作在特定位置时,效率通常比 ArrayList 高,尤其是在列表头部或中间位置,时间复杂度为 O (1)

3.随机访问元素的效率较低,时间复杂度为 O (n)


常用方法

  • add(E element) :在列表末尾添加元素
  • add(int index, E element) :在指定索引位置插入元素
  • get(int index) :获取指定索引位置的元素
  • remove(int index) :移除指定索引位置的元素
  • removeFirst() :移除列表的第一个元素
  • removeLast() :移除列表的最后一个元素
add(E element)    // 在列表末尾添加元素
add(int index, E element)    // 在指定索引位置插入元素
get(int index)    // 获取指定索引位置的元素。
remove(int index)    // 移除指定索引位置的元素
removeFirst()    // 移除列表的第一个元素
removeLast()    // 移除列表的最后一个元素

三、ArrayDeque(双端队列) 

ArrayDeque 是一个基于数组实现的双端队列,是一个可以同时在队列的头部和尾部进行高效的插入和删除操作的数据结构

特性

1.没有容量限制,会随着元素的添加自动扩容

2.可以作为栈(只在一端操作)或双端队列(两端均可操作)使用。

3.不允许存储 null 元素


常用方法

  • addFirst(E e) :在队列头部添加元素
  • addLast(E e) :在队列尾部添加元素
  • removeFirst() :移除并返回队列头部的元素
  • removeLast() :移除并返回队列尾部的元素
  • getFirst() :获取但不删除队列头部的元素
  • getLast() :获取但不删除队列尾部的元素
addFirst(E e)    // 在队列头部添加元素
addLast(E e)    // 在队列尾部添加元素
removeFirst()    // 移除并返回队列头部的元素
removeLast()    // 移除并返回队列尾部的元素
getFirst()    // 获取但不删除队列头部的元素
getLast()    // 获取但不删除队列尾部的元素

四、HashMap(哈希表)

HashMap 是 Java 中常用的键值对存储数据结构

特性

1.基于哈希表实现,查找、插入和删除的平均时间复杂度为 O (1) 。

2.不保证键值对的顺序。

3.允许键为 null ,但值也可为 null 。


常用方法

  • put(K key, V value) :向 HashMap 中添加键值对。
  • get(K key) :通过键获取对应的值。
  • remove(K key) :根据键移除键值对。
  • containsKey(K key) :检查是否包含指定的键。
  • size() :获取 HashMap 中的键值对数量。
put(K key, V value)    // 向 HashMap 中添加键值对

get(K key)    // 通过键获取对应的值

remove(K key)    // 根据键移除键值对

containsKey(K key)    // 检查是否包含指定的键

size()     // 获取 HashMap 中的键值对数量

五、TreeMap(红黑树)

TreeMap 是 Java 中的一种有序的键值对映射数据结构

特性

1.基于红黑树实现,元素按照键的自然顺序或者指定的比较器顺序进行排序。

2.提供了有序的键访问,例如获取第一个键、最后一个键、大于或小于给定键的键等操作。


常用方法

  • put(K key, V value) :添加键值对。
  • get(K key) :通过键获取值。
  • firstKey() :获取第一个键。
  • lastKey() :获取最后一个键。
  • lowerKey(K key) :获取小于给定键的最大键。
put(K key, V value)    // 添加键值对
get(K key)    // 通过键获取值
firstKey()    // 获取第一个键
lastKey()    // 获取最后一个键
lowerKey(K key)    // 获取小于给定键的最大键

六、HashSet(哈希表)

HashSet 是 Java 中用于存储不重复元素的集合

特性

1.基于哈希表实现,查找元素的时间复杂度接近 O (1) 。

2.不保证元素的顺序。


常用方法

  • add(E element) :向集合中添加元素。
  • remove(E element) :从集合中移除元素。
  • contains(E element) :检查集合是否包含指定元素。
  • size() :获取集合中元素的数量。
add(E element)    // 向集合中添加元素

remove(E element)    // 从集合中移除元素

contains(E element)    // 检查集合是否包含指定元素

size()    // 获取集合中元素的数量

⭐HashSet和HashMap的区别

  1. 数据结构和存储内容:

    • HashSet 基于哈希表实现,存储的是一组不重复的元素
    • HashMap 基于哈希表实现,存储的是键值对
  2. 方法:

    • HashSet 主要方法有 add 、 remove 、 contains 等,用于操作元素
    • HashMap 主要方法有 put 、 get 、 remove 、 containsKey 等,用于操作键值对
  3. 遍历方式:

    • 遍历 HashSet 通常使用增强型 for 循环直接获取元素。
    • 遍历 HashMap 可以通过获取键集、值集或者键值对集来进行遍历。

七、TreeSet(红黑树)

TreeSet 是 Java 中一个有序且不允许重复元素的集合

特性

1.基于红黑树实现,元素按照自然顺序或者自定义的比较器顺序排列

2.有序性使得可以方便地获取集合中的第一个、最后一个元素,以及获取特定范围内的元素。


常用方法

  • add(E element) :向集合添加元素。
  • remove(E element) :移除元素。
  • first() :获取集合中的第一个元素。
  • last() :获取集合中的最后一个元素。
add(E element)    // 向集合添加元素

remove(E element)    // 移除元素

first()    // 获取集合中的第一个元素

last()    // 获取集合中的最后一个元素

⭐TreeSet和TreeMap的区别 

  1. 存储内容不同:

    • TreeSet 存储的是一组不重复的元素
    • TreeMap 存储的是键值对
  2. 遍历方式不同:

    • TreeSet 只能遍历元素
    • TreeMap 可以遍历键、值或者键值对
  3. 操作对象不同:

    • TreeSet 的操作对象是单个元素
    • TreeMap 的操作对象是键值对
  4. 方法不同:

    • TreeSet 有 first() 、 last() 等获取集合中极值元素的方法。
    • TreeMap 有 firstKey() 、 lastKey() 等获取极值键的方法,以及 get(key) 根据键获取值的方法。

八、Stack(栈)

Stack 是一种遵循后进先出(Last-In-First-Out,LIFO)原则的数据结构

特性

1.后进先出(LIFO - Last In First Out)原则:最后进入栈的元素最先被取出。就像往一个桶里叠盘子,最后放进去的盘子会最先被拿出来。

2.操作受限:主要操作是压入(push)元素和弹出(pop)元素,以及查看栈顶元素(peek)和判断栈是否为空(empty)。

3.高效的插入和删除:在栈顶进行插入和删除操作的时间复杂度通常为 O (1) ,这些操作不需要移动大量元素。


常用方法

  • push(E item) :将元素压入栈顶
  • pop() :弹出并返回栈顶元素
  • peek() :查看栈顶元素,但不弹出
  • empty() :判断栈是否为空
push(E item)    // 将元素压入栈顶
pop()    // 弹出并返回栈顶元素
peek()    // 查看栈顶元素,但不弹出
empty()    // 判断栈是否为空

九、Queue(队列)

Queue 是一种遵循先进先出(First-In-First-Out,FIFO)原则的数据结构,即先进入队列的元素先出队列。

特性

1.元素的添加和移除按照特定的顺序进行,先进先出。

2.可以为空,并且可以查询队列是否为空以及队列中元素的数量


常用方法

  • offer(E e) :尝试将元素添加到队列末尾,如果成功返回true,如果队列已满则返回 false
  • poll() :获取并移除队列头部的元素,如果队列为空则返回 null 
  • peek() :获取但不移除队列头部的元素,如果队列为空则返回 null 
  • size() :返回队列中元素的数量
  • isEmpty() :判断队列是否为空
offer(E e)    // 尝试将元素添加到队列末尾,如果成功返回 true ,如果队列已满则返回 false 
poll()    // 获取并移除队列头部的元素,如果队列为空则返回 null 
peek()    // 获取但不移除队列头部的元素,如果队列为空则返回 null 
size()    // 返回队列中元素的数量
isEmpty()    // 判断队列是否为空

十、PriorityQueue(优先级队列)

PriorityQueue 是一个无界的优先级队列,其中的元素按照其自然顺序(或者通过提供的比较器)进行排序

特性

1.元素按照优先级进行排序,优先级高的元素先出队。

2.不允许插入 null 元素。

3.是非线程安全的。


常用方法

  • offer(E e) :将元素插入到队列中合适的位置以保持队列的优先级顺序
  • poll() :获取并移除队列头部的元素,返回并删除具有最高优先级的元素
  • peek() :获取但不移除队列头部优先级最高的元素
  • size() :返回队列中元素的个数
  • isEmpty() :判断队列是否为空
offer(E e)    // 将元素插入到队列中合适的位置以保持队列的优先级顺序
poll()    // 获取并移除队列头部的元素,返回并删除具有最高优先级的元素
peek()    // 获取但不移除队列头部优先级最高的元素
size()    // 返回队列中元素的个数
isEmpty()    // 判断队列是否为空

十一、Deque(双端队列)

Deque 是一个可以在两端进行插入和删除操作的数据结构

特性

1.支持在队列的头部和尾部添加或删除元素

2.可以作为栈(只在一端操作)或队列(两端分别进行入队和出队)使用


常用方法

  • addFirst(E e) :在队列头部添加元素
  • addLast(E e) :在队列尾部添加元素
  • removeFirst() :移除并返回队列头部的元素
  • removeLast() :移除并返回队列尾部的元素
  • getFirst() :获取但不删除队列头部的元素
  • getLast() :获取但不删除队列尾部的元素
addFirst(E e)    // 在队列头部添加元素
addLast(E e)    // 在队列尾部添加元素
removeFirst()    // 移除并返回队列头部的元素
removeLast()    // 移除并返回队列尾部的元素
getFirst()    // 获取但不删除队列头部的元素
getLast()    // 获取但不删除队列尾部的元素

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

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

相关文章

智能手表PPG技术原理:【图文讲解】

光体积变化描记图法(Photoplethysmography,简称PPG)是借光电手段在活体组织中监测血液容积变化的一种无创监测方法 目前智能手表比较标配的功能:血糖、血压、心电、心率、血氧 1:人体血管 先温习一下,人…

Java项目-基于Springboot的智慧养老平台项目(源码+文档).zip

作者:计算机学长阿伟 开发技术:SpringBoot、SSM、Vue、MySQL、ElementUI等,“文末源码”。 开发运行环境 开发语言:Java数据库:MySQL技术:SpringBoot、SpringClud、Vue、Mybaits Plus、ELementUI工具&…

TikTok广告账号被封?常见原因及解决方法分享

TikTok广告投放往往会给我们的账号带来高效曝光和精准流量,但同时许多用户也面临着一个困扰——广告账号被封禁的问题。将在此文一起商讨TikTok广告账号被封禁的原因,分析平台的具体规定,提供解决问题的应对策略,帮助大家有效规避…

PRCV 2024 - Day 1

2024年10月18日至10月20日,第七届中国模式识别与计算机视觉大会(The 7th Chinese Conference on Pattern Recognition and Computer Vision, PRCV 2024)在新疆乌鲁木齐的新疆国际会展中心举办,是国内顶级的模式识别和计算机视觉领…

专家系统简介

本文对基于规则的专家系统进行简介,举例专家系统的结构类似 MYCIN 系统,同时串联介绍专家系统的各种思想。需要注意的是,本文所述仅是专家系统的一种实现途径,其依赖规则进行知识表示和推理,另外还有基于语义网络、框架…

详解23种设计模式——第一部分:概述+创建型模式

目录 1. 概述 2. 创建型模式 2.1 简单(静态)工厂模式 2.1.1 介绍 2.1.2 实现 2.2 工厂模式 2.3 抽象工厂模式 2.4 单例模式 2.4.1 饿汉模式 2.4.2 懒汉模式 2.4.3 线程安全的懒汉式 2.4.4 DCL单例 - 高性能的懒汉式 2.5 建造者模式 2.6 原…

linux模拟:chrony同步时间

实验材料: 服务器:linux,红帽-9.1 客户端:linux,乌班图-18.4 Server/client; 安装chrony yum install -y chrony 查看chrony的状态: systemctl status chronyd 服务器: 在/etc/chrony.conf文件里面…

理解VSCODE基于配置的设置,避免臃肿

这节课我们讲两点: (一)下载、安装、汉化及美化 VSCODE; (二)理解VSCODE中基于配置(Profiles)的设置(Settings),让 VSCODE 保持清爽。 &#xff0…

无极低码课程【redis windows下服务注册密码修改】

下载Windows版本的Redis linux环境 (自行下载) 1.打开官网https://redis.io/downloads/ windows环境 1.打开github https://github.com/microsoftarchive/redis/releases 然后选择你喜欢的版本zip或msi下载 2.这里下载zip版,解压后后,打开安装目录 3.双击redis-server…

学习莫烦python---神经网络

一、卷积神经网络区别 1、“卷积” 和 “神经网络”. 卷积也就是说神经网络不再是对每个像素的输入信息做处理了,而是图片上每一小块像素区域进行处理, 这种做法加强了图片信息的连续性. 使得神经网络能看到图形, 而非一个点. 这种做法同时也加深了神经网络对图片的理解 –翻译…

快充协议有哪些,都有哪些特点

什么是PD协议 PD协议是一种充电协议,全称为“USB Power Delivery(USB PD)”,是由USB-IF(USB Implementers Forum)组织制定的一种标准协议‌。它是一种基于USB接口的快速充电技术,可以实现高达1…

【无人机设计与控制】基于环形拓扑的多目标粒子群优化算法(MO_Ring_PSO_SCD)求解无人机

摘要 本文提出了一种基于环形拓扑的多目标粒子群优化算法 (MO-Ring-PSO-SCD) 用于解决无人机的三维路径规划问题。该算法同时优化了无人机路径的路径成本和威胁成本,通过粒子群算法的多目标优化能力实现路径选择。实验结果表明,与传统算法相比&#xff…

RFID在半导体天车的问题解决方案

RFID在半导体天车的问题解决方案 目前苏州某科技公司的半导体天车目前现阶段存在问题: (1)传统8寸晶圆加工过程中涉及几十道工序,目前都是采用人工搬运,容易产生污染物导致晶圆损坏,速度也比较慢&#xf…

自动驾驶系列—自动驾驶测试前的必备流程:车辆准备平台深度解析

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

Java笔试04

采用FIFO(先进先出)页面置换算法,可能会产生 抖动现象:抖动现象是指频繁地进行页面置换,导致系统资源大部分时间用于页面置换而不是实际的计算工作。FIFO算法由于其简单的先进先出特性,可能会导致频繁的页面…

消费即赚,循环购物模式引领潮流

在电商界,一种全新的购物模式正悄然兴起——循环购物模式。听起来有些不可思议?消费满额还能获得高额返利,甚至每日领取现金?这背后究竟隐藏着怎样的秘密? 一、循环购物模式初印象 想象一下,您在某个电商平…

【OpenGL】创建窗口/绘制图形

需要云服务器等云产品来学习Linux可以移步/-->腾讯云<--/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;新用户首次下单享超低折扣。 目录 一、创建窗口 1、代码流程图 2、运行结果 3、代码 二、三角形 1、顶点缓冲对象&#xff1a;Vertex Buffer Object…

Redis --- 第四讲 --- 常用数据结构 --- Hash、List

一、Hash哈希类型的基本介绍。 哈希表&#xff1a;之前学过的所有数据结构中&#xff0c;最最重要的。 1、日常开发中&#xff0c;出场频率非常高。 2、面试中&#xff0c;非常重要的考点。 Redis自身已经是键值对结构了。Redis自身的键值对就是通过哈希的方式来组织的。把…

行业认可 | 钛铂数据喜获2024爱分析 · 数据智能优秀厂商奖

近日&#xff0c;TapData 凭借在数据智能领域的卓越表现&#xff0c;成功入选2024爱分析数据智能优秀厂商榜单。 9月13日&#xff0c;2024爱分析第六届数据智能高峰论坛圆满举办。作为此次论坛的重磅环节&#xff0c;正式公布了“2024爱分析数智卓越企业奖”“2024爱分析数据智…

汽车建模用什么软件最好?汽车建模渲染建议!

在汽车建模和渲染领域&#xff0c;选择合适的软件对于实现精确的设计与高质量的视觉效果至关重要。那么不少的汽车设计师如何选择合适的建模软件与渲染方案呢&#xff0c;一起来简单看看吧&#xff01; 一、汽车建模用软件推荐 1、Alias Autodesk旗下的Alias系列软件是汽车设…