Java-数据结构(一)

news2024/11/15 9:00:26

这里写目录标题

  • 前言
  • 一、为什么需要数据结构?
    • 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/709383.html

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

相关文章

文件操作 -- C语言

在之前学习的时候&#xff0c;我们可以发现当程序运行完&#xff0c;我们之前保存的数据就会消失&#xff0c;再次运行时还得重新输入&#xff0c;为了使我们保存的数据在下次运行时还能使用&#xff0c;我们这篇文章来学习一下怎么使用文件操作&#xff0c;将我们的数据保存在…

SQL14 操作符混合运用

select device_id,gender,age,university,gpa from user_profile where university山东大学 and gpa>3.5 or university复旦大学 and gpa>3.8;

Linux 抓包工具——tcpdump

1 简介 用简单的话来定义tcpdump&#xff0c;就是&#xff1a;dump the traffic on a network&#xff0c;根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口…

由浅入深探究mysql索引结构原理、性能分析与优化

目录 第一部分&#xff1a;基础知识 第二部分&#xff1a;MYISAM和INNODB索引结构 1、 简单介绍B-tree B tree树 2、 MyisAM索引结构 3、 Annode索引结构 4、 MyisAM索引与InnoDB索引相比较 第三部分&#xff1a;MYSQL优化 1、表数据类型选择 2、sql语句优化 3、系统配置与维护…

Java对称与非对称加密解密(AES与RSA)

尽可能预想所有残酷的可能性、因为现实永远让你无法预警,而且又吝于给人慈悲。——富坚义博 今天我们讨论一下秘钥这个东西 一、对称加密技术与非对称加密技术简述 加密技术可以分为对称与非对称两种。 对称加密、解密即加密与解密用的是同一把秘钥,常用的对称加密技术有DES,A…

MySQL - 连表查询 Join On 详解

1. 连表查询详解 市面上有 7 种连表查询, 总共归为三大类 : 左查询 LEFT JOIN -- 以左表为基准右查询 RIGHT JOIN -- 以右表为基准交叉查询 INNER JOIN -- 查询两表都有的数据 操作描述inner join如果表中至少有一个匹配, 就返回行left join会从左表中返回所有的值…

IDEA 设置文件头的注释信息author,date,description

打开setting设置窗口 file and code Templates 2、编辑Class模版 /*** Author:${USER}* Date:${YEAR}-${MONTH}-${DAY}* Description:TODO* */ 创建一个新JAVA类&#xff0c;测试一下&#xff0c;OK

chatgpt赋能python:如何通过Python赚取外快:SEO技巧分享

如何通过Python赚取外快&#xff1a;SEO技巧分享 作为一名有10年Python编程经验的工程师&#xff0c;我发现Python不仅用来写代码&#xff0c;还可以用来赚取外快。SEO是一个非常赚钱的市场&#xff0c;而Python可以帮助我们更好地优化网站&#xff0c;从而实现更高的排名&…

一步一步学OAK之四:实现如何在低延迟下使用高分辨率视频

目录 Setup 1: 创建文件Setup 2: 安装依赖Setup 3: 导入需要的包Setup 4: 创建pipelineSetup 5: 创建节点Setup 6: 设置节点的属性和参数。Setup 7: 建立链接关系Setup 8: 连接设备并启动管道Setup 9: 创建与DepthAI设备通信的输入队列和输出队列Setup 10: 主循环获取视频帧显示…

深度学习与神经网络阅读笔记(持续更新)

深度学习与神经网络阅读笔记&#xff08;持续更新&#xff09; 机器学习基础绪论人工智能主要领域可分为如下&#xff1a;人工智能的发展史&#xff1a;机器学习表示学习深度学习 线性模型Logistic回归Softmax回归感知器支持向量机总结对比 基础模型循环神经网络应用到机器学习…

MongoTemplate手动动态创建(简版)

1、背景 最近遇到一个需求&#xff0c;就是动态获取springboot中MongoTemplate&#xff0c;有哪些mongo数据库在项目启动的时候不确定&#xff0c;运行过程中有可能会增加&#xff0c;也有可能减少。只能通过一个接口获取所有mongo数据库的地址。但是springboot本身提供的mong…

panda3d 模型转换命令复习学习

在此学习了把maya模型转换为panda3d的egg格式&#xff1b; 在Panda3d中转换Maya模型为egg格式并使用pview查看_panda3d egg文件浏览器_bcbobo21cn的博客-CSDN博客 下面继续看一下模型转换命令&#xff1b;列出带 egg 字符串的命令&#xff1b; 先复习一下&#xff0c;可以把m…

Java -- XXL-JOB分布式任务调度平台

XXL-JOB是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线&#xff0c;开箱即用 xxl是xxl-job的开发者大众点评的【许雪里】名称的拼音开头 官网地址 分布式任务调度平台XXL-JOB 文档地址…

响应数据加密解决方案

需求分析 响应数据加密是一种很重要的安全措施,可以保护数据在传输过程中不被未经授权的用户拦截、窃取或篡改。以下是响应数据加密需求分析: 响应数据必须进行加密: 所有响应数据必须进行加密,以保证数据在传输过程中的安全性。服务器可以采用HTTPS协议对响应数据进行加密…

剑指 Offer 46: 把数字翻译成字符串

这道题先画模型 假设3个数&#xff0c;第一个第二个可以组&#xff0c;第二个第三个可以组。所以有3种 123 && 字母3 && 1字母 当发现有两种操作方法&#xff0c;说明当前方法出错误了&#xff0c;必须立即想别的办法&#xff01; 除了使用一直除外&#xff…

ad18报错:net antennae:track

画了板子之后发现有这个错误提示&#xff0c;看了图&#xff0c;发现是在一个焊盘下面有2根残留的线&#xff0c;而且线边上出现了天线标志 net antennae的含义是网络天线&#xff0c;这里可以理解为板卡上某个网络的布线形成了天线&#xff0c;但是没有特别标注这一部分是天线…

【Mysql】MySQL体系结构,InnoDB、MyISAM存储引擎,索引结构、分类、语法、性能分析

1. MySQL体系结构 连接层 主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念&#xff0c;为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。 服务层…

(五)Web_Server+网页可视化展示

第一步&#xff1a;先使用nodeJS获取mqtt转发的数据&#xff1a;添加链接描述 第二步&#xff1a;使用fs库&#xff0c;将数据存入txt文件(接上一步,这里没处理数据格式&#xff0c;只是测试) var fsrequire("fs");const mqtt require(mqtt) //存储订阅的消息 var …

Android ConstrainLayout布局中View位置的介绍与使用

一、介绍 ConstrainLayout是一款布局View&#xff0c;再Design库中&#xff0c;现已被大家广泛接受并使用。ConstrainLayout的布局采用的方式和其他都不同&#xff0c;他的对其方式是类似RelativeLayout&#xff0c;但是和RelativeLayout有明显的区别。 在布局渲染的时候&#…

获取Xilinx FPGA芯片IDCODE的4种方法(支持任何FPGA型号)

文章目录 方式1&#xff1a;官方文档方式2&#xff1a;一个头文件方式3&#xff1a;BSDL文件方法4&#xff1a;芯片IDCODE在线搜索网站Xilinx FPGA部分型号IDCODE汇总 方式1&#xff1a;官方文档 对于常用的Spartan-6系列可以在UG380文档中找到对应的IDCODE&#xff0c;Sparta…