Java中数据结构(基本数据类型+引用数据类型)介绍+整理+例子+对比
一、Java数据类型分类
在Java中,数据类型可以分为两大类:内置数据类型(Primitive Data Types)和引用数据类型(Reference Data Types)。
**内置数据类型(Primitive Data Types)**是Java语言的基本数据类型,用于表示基本的数据值。这些数据类型包括:
-
整数类型(整数数据):
byte
:8位,范围为-128到127。short
:16位,范围为-32,768到32,767。int
:32位,范围为-231到231-1。long
:64位,范围为-263到263-1。
-
浮点数类型(小数数据):
float
:32位,用于表示单精度浮点数。double
:64位,用于表示双精度浮点数。
-
字符类型:
char
:16位,用于表示单个字符。
-
布尔类型:
boolean
:表示布尔值,只有两个取值:true
和false
。
**引用数据类型(Reference Data Types)**是指引用对象的数据类型。这些数据类型包括:
-
字符串类型(String):用于表示文本数据,实际上是一个类而不是内置类型。
-
数组类型(Array):用于存储固定大小的同类型元素,也是对象。
-
类和自定义数据类型:可以创建自己的类和对象,这些对象的数据类型是自己定义的。
-
接口(Interface):用于定义抽象数据类型。
-
枚举类型(Enum):用于表示一组具名的常量。
-
基本包装类型(Wrapper Classes):用于将基本数据类型封装为对象,如
Integer
、Double
等,以便进行更多的操作。
在Java应用中,可以使用这些数据类型来定义变量、函数参数、函数返回值等,以处理各种数据和对象。选择适当的数据类型对于编写高效、可维护的代码非常重要。
二、Java内置数据类型
-
数组(Array):
- 数组是一种固定大小的数据结构,用于存储相同类型的元素。
- 访问元素的时间复杂度是O(1)。
- 数组大小在创建后不能更改。
-
列表(List):
- 列表是有序的数据结构,允许存储重复的元素。
- Java中常见的List实现包括ArrayList、LinkedList等。
- 支持按索引访问和修改元素。
-
集合(Set):
- 集合是无序的数据结构,不允许存储重复的元素。
- 常见的Set实现包括HashSet、LinkedHashSet、TreeSet等。
- 用于去重和检查元素是否存在。
-
映射(Map):
- 映射是键-值对的数据结构,每个键映射到一个值。
- 常见的Map实现包括HashMap、LinkedHashMap、TreeMap等。
- 用于建立键与值之间的关联关系。
-
堆栈(Stack):
- 堆栈是一种后进先出(LIFO)的数据结构。
- 常见的Stack实现包括Stack类,也可以使用LinkedList模拟堆栈。
-
队列(Queue):
- 队列是一种先进先出(FIFO)的数据结构。
- 常见的Queue实现包括LinkedList、ArrayDeque等。
- 用于任务调度和排队操作。
-
优先队列(PriorityQueue):
- 优先队列是一种特殊队列,元素按照优先级排列。
- 常见的PriorityQueue实现支持按元素的自然顺序或自定义比较器来确定优先级。
-
树(Tree):
- 树是一种分层结构,常见的树包括二叉树、二叉搜索树(BST)等。
- 用于搜索、排序和组织数据。
-
图(Graph):
- 图是一种复杂的数据结构,由节点和边组成,用于表示关系和网络结构。
- 常见的图算法包括深度优先搜索(DFS)和广度优先搜索(BFS)。
-
链表(LinkedList):
- 链表是一种动态数据结构,由节点组成,每个节点包含数据和指向下一个节点的引用。
- 支持快速插入和删除操作。
这些是Java中常用的数据结构,每种数据结构都适用于不同的应用场景和需求。选择合适的数据结构取决于您要解决的问题和数据操作的特性。
三、简要对比+例子
这些数据都是Java中的数据结构,用于存储和操作数据。以下是它们的简要介绍以及一些对比和例子:
-
List(列表):
- List是一个有序的数据结构,允许存储重复的元素。
- 可以根据索引访问和操作列表中的元素。
- 例子:存储一组数字 [1, 2, 3, 4, 5]。
List<Integer> numbers = new ArrayList<>(); numbers.add(1); numbers.add(2); numbers.add(3); numbers.add(4); numbers.add(5);
-
ArrayList:
- ArrayList是List的实现之一,基于数组实现,支持动态大小。
- 比较适合随机访问和修改元素。
- 例子:存储一组字符串 [“apple”, “banana”, “cherry”]。
List<String> fruits = new ArrayList<>(); fruits.add("apple"); fruits.add("banana"); fruits.add("cherry");
-
Map(映射):
- Map是一种键-值对的数据结构,其中每个键都映射到一个值。
- 键是唯一的,不允许重复,但值可以重复。
- 例子:存储学生的成绩,其中学生ID是键,分数是值。
Map<Integer, Double> studentGrades = new HashMap<>(); studentGrades.put(1, 95.5); studentGrades.put(2, 88.0); studentGrades.put(3, 76.5);
对比:
- List是有序集合,允许重复元素,通常用于存储一组值。
- ArrayList是List的实现之一,基于数组,适合随机访问元素。
- Map是键值对的数据结构,用于建立键与值之间的关联。
- HashMap是Map的实现之一,通过哈希表实现,具有快速查找性能。
示例说明:
-
如果想存储一组姓名,可以使用ArrayList:
List<String> names = new ArrayList<>(); names.add("Alice"); names.add("Bob"); names.add("Charlie");
-
如果想存储每个人的年龄,可以使用Map:
Map<String, Integer> ageMap = new HashMap<>(); ageMap.put("Alice", 25); ageMap.put("Bob", 30); ageMap.put("Charlie", 22);
这些数据结构提供了不同的方式来组织和管理数据,可以根据具体需求选择使用哪种数据结构。
相关文章:
Java中数据结构(基本数据类型+引用数据类型)介绍+整理+例子+对比
一、Java数据类型分类 在Java中,数据类型可以分为两大类:内置数据类型(Primitive Data Types)和引用数据类型(Reference Data Types)。 **内置数据类型(Primitive Data Types)**是…...
SpringSecurity原理
Spring Security是Spring框架中的一个安全性框架,用于保护Web应用程序。以下是Spring Security的工作原理: 1.认证 认证是指验证用户身份。Spring Security使用过滤器链来拦截用户的请求。在对请求进行处理之前,它需要对用户进行认证。Spri…...

云表平台突破传统,企业级低代码让软件开发速度提升
随着数字化进程的加速推进,软件开发效率和成本的要求也在日益提高。在这个背景下,低代码技术的出现为企业软件开发提供了新的解决方案。低代码开发平台以其简单易用、高效灵活的特点,已经成为各行各业企业进行应用开发的首选工具。 企业中低代…...

三数之和(双指针)
15. 三数之和 - 力扣(LeetCode) 题目描述 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三…...
Linux-bluetooth蓝牙
蓝牙配对和蓝牙连接 蓝牙配对是指在两个蓝牙设备之间建立一种安全的关系,以确保只有已经通过授权的设备才能进行通信。在蓝牙配对过程中,设备之间将共享一个加密密钥,用于保护数据传输的安全性。通常需要在设备上输入一个PIN码或者进行手动确…...

mediasoup webrtc音视频会议搭建
环境ubuntu22.10 nvm --version 0.33.11 node -v v16.20.2 npm -v 8.19.4 node-gyp -v v10.0.1 python3 --version Python 3.10.7 python with pip: sudo apt install python3-pip gcc&g version 12.2.0 (Ubuntu 12.2.0-3ubuntu1) Make 4.2.1 npm install mediasoup3 sudo …...

【操作系统】操作系统的大端模式和小端模式
什么是大端模式、小端模式? 所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中; 所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地…...

Oracle(13)Maintaining Data Integrity
目录 一、基础知识 1、Data Integrity 数据库的完整性 2、Types of Constraints 约束类型 3、Constraint States 约束状态 4、Guidelines for Constraints 约束准则 二、基础操作 1、Enabling Constraints 启用约束 2、命令方式创建约束 3、修改表创建的约束 4、删除约…...

工程(十二)Ubuntu20.04LSD_SLAM运行
博主创建了一个科研互助群Q:772356582,欢迎大家加入讨论。这是一个科研互助群,主要围绕机器人,无人驾驶,无人机方面的感知定位,决策规划,以及论文发表经验,以方便大家很好很快的科研…...

跨境电商,用指纹浏览器还是VPS?有何区别?
目前做跨境电商的小伙伴基本都是选择vps或者指纹浏览器来防关联。不过随着指纹浏览器的普及,越来越多人选择使用指纹浏览器,还没了解过指纹浏览器的小伙伴可能还在犹豫,vps和指纹浏览器到底哪个更好呢? Vps就是一个虚拟服务器&…...

R语言piecewiseSEM结构方程模型在生态环境领域实践技术应用
结构方程模型(Sructural Equation Modeling,SEM)可分析系统内变量间的相互关系,并通过图形化方式清晰展示系统中多变量因果关系网,具有强大的数据分析功能和广泛的适用性,是近年来生态、进化、环境、地学、…...

一站式解决方案:体验亚马逊轻量服务器/VPS的顶级服务与灵活性
文章目录 一、什么是轻量级服务器/VPS 二、服务器创建步骤 三、服务器连接客户端(私钥登录) 四、使用服务器搭建博客网站 五、个人浅解及总结 一、什么是轻量级服务器/VPS 亚马逊推出的轻量级服务器/VPS:是一种基于云计算技术的虚拟服务器解决方案。它允许用户…...

pda条码二维码扫描数据采集安卓手持终端扫码热敏标签打印一体机
HT800新一代移动物联终端是深圳联强优创信息科技有限公司自主研发的基于Android11操作系统的高性能、高可靠的工业级手持数据终端,能与其它设备进行无线通讯,提供良好的操作界面,支持条码扫描、RFID读写(NFC)、GPS定位…...

白上这么多年班,才知道数据可视化这么简单
写编程整理数据、做数据可视化分析,不仅难度大、易僵化,还效率低,不能及时响应业务的数据分析需求。那怎么办?换个BI数据可视化工具,套用BI方案,数据分析模型、BI数据可视化分析报表都一应俱全,…...

伊朗黑客对以色列科技和教育领域发起破坏性网络攻击
导语 近期,以色列的高等教育和科技领域遭受了一系列破坏性的网络攻击。这些攻击始于2023年1月,旨在部署以前未记录的数据清除恶意软件。在最近的攻击中,攻击者试图窃取个人身份信息和知识产权等敏感数据。本文将介绍这些攻击的具体细节&#…...
前端初始化项目切换镜像命令
不切换成国内镜像容易出现: idealTree:moni: sill idealTree buildDeps 一直卡着 命令如下: 一、 npm config get registry,查看当前镜像地址 二、出现 https://registry.npmjs.org/ 则表示在国外 三、使用以下命令切换成国内阿里…...

Springboot中解析JSON字符串(jackson库ObjectMapper解析JSON字符串)
1、ObjectMapper与JSONObject比较 1、ObjectMapper属于jackson库的一部分,JSONObject属于alibaba的fastjson,两者各有优劣,可根据自己的系统环境选择使用哪种技术。 2、目前来看,Jackson社区相对活跃,Spring MVC和Spring Boot都…...
QtC++与QToolButton详解
介绍 QToolButton 是 Qt 中的一个控件类,用于创建工具按钮,它有以下主要作用和特点: 工具按钮: QToolButton 用于创建工具按钮,允许用户执行各种操作,如启动功能、弹出菜单、打开文件等。工具按钮通常用于…...

Vue创建浅层响应式数据
shallowReactive:只处理对象第一层数据的响应式(浅响应式)。 shallowRef:只处理基本数据类型的响应式,不处理对象类型的响应式。 shallowReactive 适用于:如果有一个对象类型的数据,结构比较深…...
【Python 千题 —— 基础篇】判断列表是否为空
题目描述 题目描述 编写一个程序,给出一个列表,判断该列表是否为空。如果该列表为空,输出 “The list is empty”;如果不为空,输出 “The list is not empty”。 输入描述 无输入。 输出描述 根据该列表是否为空…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...

MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...

NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...

FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...

C++实现分布式网络通信框架RPC(2)——rpc发布端
有了上篇文章的项目的基本知识的了解,现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...