当前位置: 首页 > news >正文

Java中数据结构(基本数据类型+引用数据类型)介绍+整理+例子+对比

一、Java数据类型分类

在Java中,数据类型可以分为两大类:内置数据类型(Primitive Data Types)和引用数据类型(Reference Data Types)。

**内置数据类型(Primitive Data Types)**是Java语言的基本数据类型,用于表示基本的数据值。这些数据类型包括:

  1. 整数类型(整数数据):

    • byte:8位,范围为-128到127。
    • short:16位,范围为-32,768到32,767。
    • int:32位,范围为-231到231-1。
    • long:64位,范围为-263到263-1。
  2. 浮点数类型(小数数据):

    • float:32位,用于表示单精度浮点数。
    • double:64位,用于表示双精度浮点数。
  3. 字符类型:

    • char:16位,用于表示单个字符。
  4. 布尔类型:

    • boolean:表示布尔值,只有两个取值:truefalse

**引用数据类型(Reference Data Types)**是指引用对象的数据类型。这些数据类型包括:

  1. 字符串类型(String):用于表示文本数据,实际上是一个类而不是内置类型。

  2. 数组类型(Array):用于存储固定大小的同类型元素,也是对象。

  3. 类和自定义数据类型:可以创建自己的类和对象,这些对象的数据类型是自己定义的。

  4. 接口(Interface):用于定义抽象数据类型。

  5. 枚举类型(Enum):用于表示一组具名的常量。

  6. 基本包装类型(Wrapper Classes):用于将基本数据类型封装为对象,如IntegerDouble等,以便进行更多的操作。

在Java应用中,可以使用这些数据类型来定义变量、函数参数、函数返回值等,以处理各种数据和对象。选择适当的数据类型对于编写高效、可维护的代码非常重要。

二、Java内置数据类型

  1. 数组(Array)

    • 数组是一种固定大小的数据结构,用于存储相同类型的元素。
    • 访问元素的时间复杂度是O(1)。
    • 数组大小在创建后不能更改。
  2. 列表(List)

    • 列表是有序的数据结构,允许存储重复的元素。
    • Java中常见的List实现包括ArrayList、LinkedList等。
    • 支持按索引访问和修改元素。
  3. 集合(Set)

    • 集合是无序的数据结构,不允许存储重复的元素。
    • 常见的Set实现包括HashSet、LinkedHashSet、TreeSet等。
    • 用于去重和检查元素是否存在。
  4. 映射(Map)

    • 映射是键-值对的数据结构,每个键映射到一个值。
    • 常见的Map实现包括HashMap、LinkedHashMap、TreeMap等。
    • 用于建立键与值之间的关联关系。
  5. 堆栈(Stack)

    • 堆栈是一种后进先出(LIFO)的数据结构。
    • 常见的Stack实现包括Stack类,也可以使用LinkedList模拟堆栈。
  6. 队列(Queue)

    • 队列是一种先进先出(FIFO)的数据结构。
    • 常见的Queue实现包括LinkedList、ArrayDeque等。
    • 用于任务调度和排队操作。
  7. 优先队列(PriorityQueue)

    • 优先队列是一种特殊队列,元素按照优先级排列。
    • 常见的PriorityQueue实现支持按元素的自然顺序或自定义比较器来确定优先级。
  8. 树(Tree)

    • 树是一种分层结构,常见的树包括二叉树、二叉搜索树(BST)等。
    • 用于搜索、排序和组织数据。
  9. 图(Graph)

    • 图是一种复杂的数据结构,由节点和边组成,用于表示关系和网络结构。
    • 常见的图算法包括深度优先搜索(DFS)和广度优先搜索(BFS)。
  10. 链表(LinkedList)

    • 链表是一种动态数据结构,由节点组成,每个节点包含数据和指向下一个节点的引用。
    • 支持快速插入和删除操作。

这些是Java中常用的数据结构,每种数据结构都适用于不同的应用场景和需求。选择合适的数据结构取决于您要解决的问题和数据操作的特性。

三、简要对比+例子

这些数据都是Java中的数据结构,用于存储和操作数据。以下是它们的简要介绍以及一些对比和例子:

  1. 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);
    
  2. ArrayList:

    • ArrayList是List的实现之一,基于数组实现,支持动态大小。
    • 比较适合随机访问和修改元素。
    • 例子:存储一组字符串 [“apple”, “banana”, “cherry”]。
    List<String> fruits = new ArrayList<>();
    fruits.add("apple");
    fruits.add("banana");
    fruits.add("cherry");
    
  3. 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中&#xff0c;数据类型可以分为两大类&#xff1a;内置数据类型&#xff08;Primitive Data Types&#xff09;和引用数据类型&#xff08;Reference Data Types&#xff09;。 **内置数据类型&#xff08;Primitive Data Types&#xff09;**是…...

SpringSecurity原理

Spring Security是Spring框架中的一个安全性框架&#xff0c;用于保护Web应用程序。以下是Spring Security的工作原理&#xff1a; 1.认证 认证是指验证用户身份。Spring Security使用过滤器链来拦截用户的请求。在对请求进行处理之前&#xff0c;它需要对用户进行认证。Spri…...

云表平台突破传统,企业级低代码让软件开发速度提升

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

三数之和(双指针)

15. 三数之和 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三…...

Linux-bluetooth蓝牙

蓝牙配对和蓝牙连接 蓝牙配对是指在两个蓝牙设备之间建立一种安全的关系&#xff0c;以确保只有已经通过授权的设备才能进行通信。在蓝牙配对过程中&#xff0c;设备之间将共享一个加密密钥&#xff0c;用于保护数据传输的安全性。通常需要在设备上输入一个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 …...

【操作系统】操作系统的大端模式和小端模式

什么是大端模式、小端模式&#xff1f; 所谓的大端模式&#xff0c;是指数据的低位保存在内存的高地址中&#xff0c;而数据的高位保存在内存的低地址中&#xff1b; 所谓的小端模式&#xff0c;是指数据的低位保存在内存的低地址中&#xff0c;而数据的高位保存在内存的高地…...

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&#xff1a;772356582&#xff0c;欢迎大家加入讨论。这是一个科研互助群&#xff0c;主要围绕机器人&#xff0c;无人驾驶&#xff0c;无人机方面的感知定位&#xff0c;决策规划&#xff0c;以及论文发表经验&#xff0c;以方便大家很好很快的科研…...

跨境电商,用指纹浏览器还是VPS?有何区别?

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

R语言piecewiseSEM结构方程模型在生态环境领域实践技术应用

结构方程模型&#xff08;Sructural Equation Modeling&#xff0c;SEM&#xff09;可分析系统内变量间的相互关系&#xff0c;并通过图形化方式清晰展示系统中多变量因果关系网&#xff0c;具有强大的数据分析功能和广泛的适用性&#xff0c;是近年来生态、进化、环境、地学、…...

一站式解决方案:体验亚马逊轻量服务器/VPS的顶级服务与灵活性

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

pda条码二维码扫描数据采集安卓手持终端扫码热敏标签打印一体机

HT800新一代移动物联终端是深圳联强优创信息科技有限公司自主研发的基于Android11操作系统的高性能、高可靠的工业级手持数据终端&#xff0c;能与其它设备进行无线通讯&#xff0c;提供良好的操作界面&#xff0c;支持条码扫描、RFID读写&#xff08;NFC&#xff09;、GPS定位…...

白上这么多年班,才知道数据可视化这么简单

写编程整理数据、做数据可视化分析&#xff0c;不仅难度大、易僵化&#xff0c;还效率低&#xff0c;不能及时响应业务的数据分析需求。那怎么办&#xff1f;换个BI数据可视化工具&#xff0c;套用BI方案&#xff0c;数据分析模型、BI数据可视化分析报表都一应俱全&#xff0c;…...

伊朗黑客对以色列科技和教育领域发起破坏性网络攻击

导语 近期&#xff0c;以色列的高等教育和科技领域遭受了一系列破坏性的网络攻击。这些攻击始于2023年1月&#xff0c;旨在部署以前未记录的数据清除恶意软件。在最近的攻击中&#xff0c;攻击者试图窃取个人身份信息和知识产权等敏感数据。本文将介绍这些攻击的具体细节&#…...

前端初始化项目切换镜像命令

不切换成国内镜像容易出现&#xff1a; idealTree:moni: sill idealTree buildDeps 一直卡着 命令如下&#xff1a; 一、 npm config get registry&#xff0c;查看当前镜像地址 二、出现 https://registry.npmjs.org/ 则表示在国外 三、使用以下命令切换成国内阿里…...

Springboot中解析JSON字符串(jackson库ObjectMapper解析JSON字符串)

1、ObjectMapper与JSONObject比较 1、ObjectMapper属于jackson库的一部分,JSONObject属于alibaba的fastjson&#xff0c;两者各有优劣&#xff0c;可根据自己的系统环境选择使用哪种技术。 2、目前来看&#xff0c;Jackson社区相对活跃&#xff0c;Spring MVC和Spring Boot都…...

QtC++与QToolButton详解

介绍 QToolButton 是 Qt 中的一个控件类&#xff0c;用于创建工具按钮&#xff0c;它有以下主要作用和特点&#xff1a; 工具按钮&#xff1a; QToolButton 用于创建工具按钮&#xff0c;允许用户执行各种操作&#xff0c;如启动功能、弹出菜单、打开文件等。工具按钮通常用于…...

Vue创建浅层响应式数据

shallowReactive&#xff1a;只处理对象第一层数据的响应式&#xff08;浅响应式&#xff09;。 shallowRef&#xff1a;只处理基本数据类型的响应式&#xff0c;不处理对象类型的响应式。 shallowReactive 适用于&#xff1a;如果有一个对象类型的数据&#xff0c;结构比较深…...

【Python 千题 —— 基础篇】判断列表是否为空

题目描述 题目描述 编写一个程序&#xff0c;给出一个列表&#xff0c;判断该列表是否为空。如果该列表为空&#xff0c;输出 “The list is empty”&#xff1b;如果不为空&#xff0c;输出 “The list is not empty”。 输入描述 无输入。 输出描述 根据该列表是否为空…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...