当前位置: 首页 > 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);
    

这些数据结构提供了不同的方式来组织和管理数据,可以根据具体需求选择使用哪种数据结构。

http://www.lryc.cn/news/221597.html

相关文章:

  • SpringSecurity原理
  • 云表平台突破传统,企业级低代码让软件开发速度提升
  • 三数之和(双指针)
  • Linux-bluetooth蓝牙
  • mediasoup webrtc音视频会议搭建
  • 【操作系统】操作系统的大端模式和小端模式
  • Oracle(13)Maintaining Data Integrity
  • 工程(十二)Ubuntu20.04LSD_SLAM运行
  • 跨境电商,用指纹浏览器还是VPS?有何区别?
  • R语言piecewiseSEM结构方程模型在生态环境领域实践技术应用
  • 一站式解决方案:体验亚马逊轻量服务器/VPS的顶级服务与灵活性
  • pda条码二维码扫描数据采集安卓手持终端扫码热敏标签打印一体机
  • 白上这么多年班,才知道数据可视化这么简单
  • 伊朗黑客对以色列科技和教育领域发起破坏性网络攻击
  • 前端初始化项目切换镜像命令
  • Springboot中解析JSON字符串(jackson库ObjectMapper解析JSON字符串)
  • QtC++与QToolButton详解
  • Vue创建浅层响应式数据
  • 【Python 千题 —— 基础篇】判断列表是否为空
  • 基于Java+SpringBoot+Mybaties-plus+Vue+ElementUI 失物招领小程序 设计与实现
  • 找到【SVM】中最优的惩罚项系数C
  • Go 面向对象,多态
  • Anaconda如何创建一个环境
  • 【gerrit】【技巧】如何获取gerrit库入库统计信息之三——gerrit搜索之时间过滤条件
  • wpf Grid布局详解 `Auto` 和 `*` 是两种常见的设置方式 行或列占多个单元格,有点像excel里的合并单元格。使其余的列平均分配剩余的空间
  • js 高效生成连续递增的小数数组
  • 『昆仑天工』4款AI产品开源!提供API对接!
  • C语言--每日五道选择题--Day2
  • C++——类和对象(初始化列表、匿名对象、static成员、类的隐式类型转换和explicit关键字、内部类)
  • 高德地图撒点组件