Java-数据结构(一)-java1中有哪些数据结构呢?

news2024/11/28 4:29:27

这里写目录标题

  • 前言
  • 一、为什么需要数据结构?
    • 1、低效的操作
    • 2、占用过多的内存空间
    • 3、困难的数据操作
  • 二、枚举(Enumeration)
    • 1、定义
    • 2、关键字
    • 3、适用场景
  • 三、 位集合(BitSet)
    • 1、定义
    • 2、方法
    • 3、适用场景
  • 四、向量(Vector)
    • 1、定义
    • 2、方法
    • 3、适用场景
  • 五、栈(Stack)
    • 1、定义
    • 2、方法
    • 3、适用场景
  • 六、字典(Dictionary)
    • 1、定义
    • 2、方法
  • 七、哈希表(Hashtable)
  • 八、 属性(Properties)
  • 二维表总结

前言

    在Java中,数据结构是指在程序中用来组织和存储数据的方式。Java提供了丰富的数据结构,可以根据不同的需求选择合适的数据结构来操作和处理数据。本文将介绍在Java1版本工具包中的主要数据结构,包括枚举、位集合、向量、栈、字典、哈希表、属性。

一、为什么需要数据结构?

    在计算机编程中,我们经常需要处理大量的数据。如果没有合适的数据结构来存储和操作这些数据,那么我们将会面临以下问题:

1、低效的操作

    没有数据结构,我们可能需要遍历整个数据集合来查找特定的数据,这样的操作时间复杂度往往很高,使得程序变得低效。

2、占用过多的内存空间

    数据结构可以帮助我们有效地存储和管理数据,从而避免浪费过多的内存空间。

3、困难的数据操作

    某些特定的操作,如插入、删除、排序等,如果没有合适的数据结构,将会变得非常困难和复杂。

    因此,数据结构的引入可以极大地提高程序的运行效率和可维护性

二、枚举(Enumeration)

1、定义

    枚举是一种特殊的数据类型,用于定义一组命名常量。

2、关键字

    在Java中,枚举类型是通过关键字enum来定义的。

3、适用场景

    枚举常常用于表示一组有限的取值范围,比如一周的星期几、颜色等。枚举类型可以通过values()方法获得所有的枚举常量。

enum Weekday {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
}

// 使用枚举常量
Weekday day = Weekday.MONDAY;
System.out.println(day);  // 输出:MONDAY

三、 位集合(BitSet)

1、定义

    位集合是用来存储位的数据结构。

2、方法

    在Java中,BitSet类提供了一组方法来操作位集合。
在这里插入图片描述

3、适用场景

    位集合可以用来表示一组开关状态、标志位等。

BitSet bitSet = new BitSet(8);  // 创建一个8位的位集合
bitSet.set(2);  // 设置第2位为true
bitSet.set(4);  // 设置第4位为true

if (bitSet.get(2)) {
    System.out.println("第2位为true");
}

四、向量(Vector)

1、定义

    向量是一种动态数组,其长度可以根据需要增长或缩小。

2、方法

    在Java中,Vector类提供了一组方法来操作向量。
在这里插入图片描述

3、适用场景

    向量可以存储任意类型的对象,并且可以根据需要自动调整大小。

Vector<String> vector = new Vector<>();
vector.add("Apple");
vector.add("Banana");
vector.add("Orange");

System.out.println(vector.get(0));  // 输出:Apple

五、栈(Stack)

1、定义

    栈是一种后进先出(LIFO)的数据结构,只允许在一端(栈顶)进行插入和删除操作。

2、方法

    在Java中,Stack类继承自Vector类,提供了一组方法来操作栈。

在这里插入图片描述

3、适用场景

    栈常常用于方法调用、表达式求值和内存管理等场景。

Stack<String> stack = new Stack<>();
stack.push("Java");
stack.push("Python");
stack.push("C++");

System.out.println(stack.pop());  // 输出:C++

六、字典(Dictionary)

1、定义

    字典是一种键值对的数据结构,也可以理解为映射(Map)。

2、方法

    在Java中,Dictionary是一个抽象类,常用的实现类是Hashtable。
在这里插入图片描述

Dictionary<String, String> dictionary = new Hashtable<>();
dictionary.put("name", "Tom");
dictionary.put("age", "25");

System.out.println(dictionary.get("name")); // 输出:Tom

    字典允许通过键来查找和存储值。

七、哈希表(Hashtable)

Hashtable<String, Integer> hashtable = new Hashtable<>();
hashtable.put("apple", 1);
hashtable.put("banana", 2);
hashtable.put("orange", 3);

System.out.println(hashtable.get("banana"));  // 输出:2

    哈希表根据键的哈希值来存储和定位值的位置,具有快速的查找和插入性能。

八、 属性(Properties)

    属性是一种特殊的字典,用于存储配置信息。
    在Java中,Properties类继承自Hashtable,专门用于处理属性配置文件。

Properties properties = new Properties();

try (InputStream input = new FileInputStream("config.properties")) {
  properties.load(input);
} catch (IOException e) {
  e.printStackTrace();
}

String username = properties.getProperty("username");
String password = properties.getProperty("password");

System.out.println("Username: " + username);
System.out.println("Password: " + password);

    属性可以将配置信息以键值对的方式存储和读取,常用于读取和存储应用程序的配置参数。

二维表总结

在这里插入图片描述
在这里插入图片描述
数据结构的文章持续更新中,喜欢的小伙伴持续关注哦

如果本篇博客对您有一定的帮助,请您留下宝贵的三连:留言+点赞+收藏哦。

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

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

相关文章

Ping命令讲解

ping是什么&#xff1f; ping (Packet Internet Groper)&#xff0c;因特网包探索器&#xff0c;用于测试网络连接量的程序。Ping发送一个ICMP&#xff1b;回声请求消息给目的地并报告是否收到所希望的ICMP echo &#xff08;ICMP回声应答&#xff09;。它是用来检查网络是否通…

Java链式编程

一、链式编程 1.1.释义 链式编程&#xff0c;也叫级联式编程&#xff0c;调用对象的函数时返回一个this对象指向对象本身&#xff0c;达到链式效果&#xff0c;可以级联调用。 1.2.特点 可以通过一个方法调用多个方法&#xff0c;将多个方法调用链接起来&#xff0c;形成一…

3D数字化展馆三维设计的特点及优势

随着互联网技术的迭代&#xff0c;web3D技术和虚拟现实技术逐渐发展成熟&#xff0c;我们发现“三维数字展馆”这个词汇已经慢慢进入我们的视野。 三维数字展馆是属于存在于线上WEB端的虚拟三维数字展馆&#xff0c;利用3D建模技术打造一个充满科技感且可无限延伸的空间&#x…

【Linux】基础开发工具——vim篇

目录 一、vim的基本概念1.1 正常/普通/命令模式1.2 插入模式1.3 底行模式 二、vim的基本操作2.1 进入vim2.2 模式切换2.3 退出vim 三、命令模式命令集3.1 移动光标3.2 复制/粘贴3.3 撤销3.4 剪切/删除3.5 更改 四、底行模式命令集4.1 多文本操作4.2 保存/退出4.3 命令执行4.4 调…

第六步:NVIC中断优先级分组

CM4内核支持256个中断&#xff0c;其中包含了16个内核中断和240个外部中断&#xff0c;并且具有256级的可编程中断设置。 STM32F4并没有使用CM4内核的全部东西&#xff0c;而是只用了它的一部分。 STM32F40xx/STM32F41xx总共有92个中断。 STM32F42xx/STM32F43xx则总共有96个中断…

ModaHub魔搭社区:UCloud优刻得镜像市场上线Milvus向量数据库镜像

近日&#xff0c;为了更好地满足客户在AI业务场景下的需要&#xff0c;UCloud优刻得镜像市场上线支持了Milvus向量数据库镜像。 随着时代发展&#xff0c;文档资料、图片、语音、视频影像等非结构化数据开始海量涌现。为了能够更好地使用这些数据&#xff0c;可以使用embedding…

Jmeter参数传递——将上一个接口的返回结果做为变量传入下一个接口参数中

我们以CSDN文章发布为例&#xff1a; CSDN博客 - 专业IT技术发表平台CSDN博客为中国软件开发者、IT从业人员、IT初学者打造交流的专业IT技术发表平台,全心致力于帮助开发者通过互联网分享知识,让更多开发者从中受益,一同和IT开发者用代码改变未来.https://blog.csdn.net/ 注&…

Spark学习(一)---Spark简介和运行环境

文章目录 1.Spark介绍1.1 Spark核心模块1.2 使用Spark写一个WordCount1.2 Spark运行环境1.2.1 Local模式1.2.2 Standalone 模式1.2.3 高可用模式(HA)模式1.2.4 Yarn模式 1.Spark介绍 Hadoop中的MapReduce框架在设计之初并不是为了满足循环迭代式数据流处理&#xff0c;因此在多…

DMDSC共享存储集群启动、关闭及介绍

DMDSC介绍 DM 共享存储数据库集群&#xff08;DMDSC&#xff09;。DM共享存储数据库集群&#xff0c;允许多个数据库实例同时访问、操作同一数据库&#xff0c;具有高可用、高性能、负载均衡等特性。DMDSC 支持故障自动切换和故障自动重加入&#xff0c;某一个数据库实例故障后…

FastDFS【FastDFS环境搭建_Linux、FastDFS指令、复习】(二)-全面详解(学习总结---从入门到深化)

目录 FastDFS环境搭建_Linux FastDFS指令 复习&#xff1a; FastDFS环境搭建_Linux 下载安装gcc 安装方式为yum安装&#xff08;需网络&#xff09;&#xff1a; yum install gcc-c perl-devel pcre-devel openssl-devel zlib-devel wget 下载安装FastDFS wget https:/…

leetcode42. 接雨水(单调栈-java)

接雨水 leetcode42. 接雨水题目描述单调栈解题代码演示 单调栈专题 leetcode42. 接雨水 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/trapping-rain-water 题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图…

一章让你明白什么是权限

目录 &#x1f30f;什么是Linux 权限&#xff1f; &#x1f30f;文件&#xff1a; &#x1f30f;目录&#xff1a; &#x1f30f;查看文件的权限 &#x1f30f;权限针对的三类用户&#xff1a; &#x1f30f;ls -l 命令显示的意义 &#x1f30f;修改文件的属性和权限 …

uni-app获取系统信息(手机牌子、手机型号、屏幕宽度、屏幕高度)

uni.getSystemInfo({success(res) {console.log(res.brand) //手机牌子console.log(res.model) //手机型号console.log(res.screenWidth) //屏幕宽度console.log(res.screenHeight) //屏幕高度}) .exec()}}); 如下 官网链接&#xff1a;系统信息的概念 | uni-app官网

基于Java学生作业管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

机器学习面试题 - 模型评估1

目录标题 1、准确率的局限性广告投放问题&#xff1a; 2、精确率与召回率的权衡2.1 案例2.2 P-R曲线 3、平方根误差4、ROC曲线5、如何绘制ROC6、如何计算AUC7、ROC曲线相比P-R曲线有什么特点&#xff1f; 模型评估主要分为离线评估和在线评估两个阶段。 针对分类、排序、回归、…

uni_app 微信小程序 苹果手机 边框显示不全

![在这里插入图片描述](https://img-blog.csdnimg.cn/3a4c4ab1a146444c84c72d360a057c01.png 解决方案&#xff1a; 原因&#xff1a;是因为我们在设置边框的时候设置的rpx &#xff0c;自适应会自动换算px, 两者之间的比例一般都是1.5-2之间&#xff0c;对于边框 border 来说…

指定专业和城市|超声科医生赴美国佐治亚理工学院自费访学

从事超声医学的Y医生拟自费赴美国访学&#xff0c;希望在亚特兰大附近&#xff0c;且专业相符。最终我们落实了佐治亚理工学院的职位&#xff0c;专业及地理位置都符合申请人的预期目标。 Y医生背景&#xff1a; 申请类型&#xff1a;自费访学 工作背景&#xff1a;三甲医院医…

QT 实现windows系统文件拖拽

效果预览&#xff1a; 2023-07-05 14-29-11 功能描述&#xff1a; 1.首先实现了根据文件的路径获取了文件的信息&#xff0c;通过 QFileIconProvider 获取图标信息&#xff0c;并在界面上进行展示。 2.dropEvent 是实现拖拽功能的核心。重新此事件函数&#xff0c;并将窗口设…

vue实现动态URL

最近在项目上要用到动态baseURL,用的是vuex存储&#xff0c;具体实现如下 1.拦截器中重写baseURL 但是需要注意的是这个url必须符合URL格式&#xff0c;所以前端校验是必须的 2.前端校验 const validateUrl (rule, value, callback) > {if (isBlank(value)) {callback(ne…

【技巧】快速提取PowerPoint文件的图片

如果你看到PPT里的图片或背景素材比较好看&#xff0c;想要保存下来&#xff0c;你会怎么做呢&#xff1f; 可能很多人首先想到的就是选择图片后另存下来&#xff0c;或者使用截图保存&#xff0c;这也是一种方法&#xff0c;但如果图片很多的话&#xff0c;就十分繁琐和费时间…