java数据结构系列——什么是数据结构

Java的集合体系及相关数据结构---Collection系列 数据结构是计算机存储、组织数据的方式,为了更好的管理和使用数据,结合具体需求来选择; 阅读详情

写在前面

正文开始之前先给大家讲一个面试题,题目是:“有两个水壶,一个能装6升水,一个能装5升水。还有一个不限量的水池。现在需要从水池中盛出3升水。”请问如何实现?别上网搜索先想想,这是我一个朋友最近在面试北京一家公司时被问到的一个问题。我感觉挺有趣的,咱们可以在评论区探讨一下。

数据结构系列文章我是抱着学习的心态来写的。如果有哪些地方写得不好的,解释不到位的,写的有问题的,希望大家可以提出来,帮我纠正。也希望可以和大家共同成长,一起进步。

在这里插入图片描述

那么什么是数据结构呢,不知道大家有没有一个概念?其实有一段时间我对所谓的“数据结构”一直是不理解的,我不太清楚它到底是个什么东西。不知道大家是不是也这样?如果有的话,那我们一起进入今天的文章。让我用我的理解来告诉你,什么是数据结构。

在这里插入图片描述

概述

数据结构是计算机组织、存储数据的方式。简单来说就是,数据按指定的规则进行存储,从而得到一个有固定存储格式的数据集合,就称之为“数据结构”。

为了深层次的了解,其实可以分为两个层面来理解:

1、数据元素的前后之间存在某种关系,这是从逻辑层面来讲的一种逻辑关系。我们可以将其称为数据的逻辑结构。常见的逻辑结构(和其介绍)如下:

集合:同一集合之间的元素存在关系,集合之外的数据之间是没有任何关系的。
线性结构:元素之间存在一对一的关系。
树形结构:元素之间存在一对多的关系。
图形结构:元素之间存在多对多的关系。

2、某一逻辑结构的数据在内存中存储的方式,我们可以将其称为数据的物理结构(存储结构)。常见的物理结构(和其介绍)如下:

顺序存储:

简介:在内存中开辟出一组地址连续的存储单元,用于存储数据元素。
优点:节省空间因为不用额外存储元素间的逻辑关系。查看数据元素快因为每个存储单元对应一个序号,每个序号存储一个数据元素。通过序号可以快速的查找到数据。
缺点:插入、删除数据慢因为每次执行此类操作都需要移动元素。

链式存储:

简介:在内存中开辟出一组任意地址的存储单元(地址可以连续,也可以不连续),用于存储数据。
缺点:占用空间大因为除了存储数据外需要额外存储和该元素有逻辑关系的元素所对应的地址。查看数据慢,因为需要从头依次查找,链式存储的地址值可能是不连续的,需要通过上一个数据查找下一个数据的存储地址。
优点:插入、删除数据速度快,因为不需要移动元素,只要改变数据中存储的相邻元素的地址值就可以实现。

索引存储:

简介:将数据和数据间的关系进行分别存储。存放数据间逻辑关系的区域称为索引区域。
优点:提高查询数据的速度,我们可以通过索引区域快速查找到其对应数据的物理地址。
缺点:需要额外维护索引区域,增加内存消耗。

哈希存储:

简介:哈希存储(散列存储)是存放在一块地址连续的存储区域的。元素的存储位置是将数据的关键值通过哈希算法计算得到的。
优点:查询速度快,因为数据的地址值是通过数据本身来决定的,知道地址就可以节省数据查找。
缺点:数据过多时,可能会产生哈希值冲突。

分类

按照数据的逻辑结构我们可以将其分为两大类,包括线性结构和非线性结构

线性结构:

特点:数据元素之间存在一对一的线性关系。
包括两大类:顺序存储结构和链式存储结构。
线性结构常见有:数组、队列、链表和栈。

非线性结构:

概述:线性结构之外的称为非线性结构(不在过多赘述)。
非线性机构包括:二维数组、多维数组、广义表、树结构、图结构。

这可是我连着好几天没休息,中午加班写出来的,感觉我写的还不错的记得点赞,关注呦。之后我会详细介绍常用的几种数据结构。

在这里插入图片描述

如果有地方写的有问题的,希望大家可以给我指出。苦命的我要开始加班啦,哎周天也不能休息。

在这里插入图片描述

AutoDL跑yolo 由于博主在AutoDL的JupyterLab的终端直接上传ZIp文件要么老是再上传中被中断,要么就是上传后使用unzip指令解压显示“找不到”,作为纯小白的我实在太难了!这个文件列出了一个 Python 项目所需的所有依赖包及其精确的版本号。这个文件是 Python 项目中常见的一种方式,用于确保项目在不同环境中都能以相同的依赖包配置运行。3.进入JupyterLab,在文件夹目录中找到上传的文件夹,右键点击“复制路径”。然后在终端中输入以下指令进行切换到该文件夹路径。9.安装成功后开始输入指令开跑! 阅读详情

相关推荐

【Coze 扣子案例】第 23 期・商业篇:一键获取精准商机,自动化招标信息查询与分析

通过地区和项目类型等多维度组合查询全国招标信息网数据,实现招标公告的快速定位。自动解析招标公告内容,提取关键信息,并生成结构化摘要。帮助企业高效获取精准商机,提升市场竞争力,降低人工成本,解决 “信息过载” 与 “精准匹配难” 的双重问题。

weixin_72689845的博客 1928

java常见的8种数据结构

红黑树的创建:节点的初始颜色为红色。2.2。

weixin_51326478的博客 1万+

四路独立可控供电USB 2.0智能集线器设计

USB集线器是连接外设的基础接口设备,其供电管理能力直接影响系统可靠性与远程运维效率。传统HUB仅提供固定VBUS输出,缺乏端口级电源控制机制,难以实现软复位、故障隔离与功耗优化。本方案基于USB 2.0协议透明转发原理,通过硬件级电子负载开关(如MT9700)与独立MCU(ESP32-C3)协同,构建具备四路独立限流(680mA)、纳秒级通断响应、WiFi/MQTT远程管控能力的智能供电架构。技术价值体现在协议无侵入、控制域与数据域物理隔离、默认安全上电策略等工程实践要点,广泛适用于工业远程调试、实验室设

weixin_36289742的博客 193

Java数据结构

对于Java数据结构知识点的整理,对新手比较友好。

m0_73966775的博客 1万+

Windows上搭建OpenHarmony星闪开发环境:HiSpark Studio全流程指南

嵌入式开发中,环境搭建是项目启动的关键步骤。OpenHarmony作为开源操作系统,其构建体系依赖Python脚本和GN/Ninja工具链,对版本兼容性要求严格。星闪(NearLink)技术作为新一代短距无线通信方案,在时延、并发和抗干扰方面优势显著,广泛应用于智能家居、工业控制等场景。在Windows平台上,通过HiSpark Studio集成开发工具,开发者可高效完成代码编辑、编译、烧录与调试。然而,Python版本冲突、环境变量配置、驱动签名等问题常导致搭建失败。本文详细拆解从系统准备到编译验证的全流

weixin_32658257的博客 344

BAPI_OUTB_DELIVERY_CHANGE扩展指南:利用EXTENSION2与SMOD_V50B0001实现自定义字段更新

本文详细解析了如何利用BAPI_OUTB_DELIVERY_CHANGE的EXTENSION2参数与增强点SMOD_V50B0001,在不修改标准代码的前提下,安全、标准地更新SAP交货单的自定义字段。通过清晰的步骤指南和实战代码示例,帮助开发者掌握通过增强字段实现定制化业务需求的完整流程与调试技巧。

fanta的博客 451

java中常见数据结构

java中常见的数据结构

gengpengfeiazxl的博客 5179

iOS反编译-hook微信之艾特所有人

all。

2501_90243249的博客 759

一文彻底搞懂Java数据结构

在Java中,数据结构一般可以分为两大类 1.线性数据结构: 线性数据结构是指数据元素之间存在一对一的关系,即每个元素都有一个前驱和一个后继元素,形成线性序列。 2.非线性数据结构: 非线性数据结构是指数据元素之间存在一对多或多对多的关系,形成非线性结构。

永远在路上 7561

20、机器人硬件改造与Geomagic Touch设备的运动学和动力学模型

本文详细介绍了机器人CRS 465和255的硬件改造过程,包括数字阶段、模拟阶段、功率阶段及软件实现,并深入研究了Geomagic Touch触觉设备的五自由度与三自由度运动学、微分运动学及动力学模型。文章还探讨了其在虚拟手术、装配等场景中的应用,提出了硬件与模型优化方向,如电源管理改进、信号处理优化、参数校准与自适应控制,并展望了多机器人协作、多传感器融合与智能控制算法的发展前景。

e4f5g6h7的博客 122

39、信号流图:解决线性代数方程组的图论方法

本文介绍了信号流图理论在求解线性代数方程组中的应用,重点阐述了Coates方法和Mason方法的原理、步骤及对比分析。通过图论视角,将矩阵运算转化为对有向图结构的分析,利用1-因子、1-阶连接、前向路径和反馈回路等概念,推导出方程组解的拓扑公式。文章结合具体实例演示两种方法的计算过程,并总结其在电路分析、控制系统和通信系统等领域的拓展应用,展示了信号流图理论的直观性与有效性。

pear55的博客 88

java中常见的数据结构(list,stack,queue,linked,hashTable,tree)

6种常见数据结构 数组、链表、队列、堆栈、哈希表、树

weixin_44783506的博客 6192

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java数据结构系列——栈

Java数据结构系列——栈栈的定义栈结构分析代码 栈的定义 栈作为数据结构中的一种,满足FILO(先进后出功能),因此有pop方法-存储数据,我们称之为进栈或者压栈,push方法-删除数据,称之为出栈或者弹栈,peek方法-查看栈顶数据。 栈结构 分析 栈这种数据结构,用数组来存储的时候。 步骤: 1.创建一个自己的栈Stack类,需要一个泛型E。 2.成员变量,Object数组,数组大小,以及顶部指针。 3.需要两个构造器,一个无参构造,一个初始化数组大小大的数组。 4.pop()方法,不停的从顶部插入

weixin_46120770的博客 119

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

最新Java动脑学院数据结构与算法系列项目实战(完整)

动脑学院数据结构与算法系列视频教程 Java完整版 下载地址:百度网盘

jghfhgf的博客 571

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

java基础系列之数据结构

前段时间看了 大话数据结构 这本书 写点心得体验, 方便以后复习也分享一下吧 什么数据结构? 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合. 简单来说 就是 一门如何将数据组织起来 和数据处理方式 的学科; 数据结构的分类有哪些? 可以分为:物理结构 和 逻辑结构 物理结构: 顺序存储结构和链接存储结构 逻辑结构: 1.线性结构 线性结...

weixin_43588981的博客 243

【用Java学习数据结构系列】初识泛型

好久没有更新文章了,大概断更了20天,想着今天就写一下文章吧!最近也是又温习了一下数据结构,其实之前我写过关于数据结构的一个专栏那个专栏是写了顺序表,链表,栈和队列,但是那时是用C语言实现的,虽然数据结构不局限于语言,但是总归在语言的使用上有所不同,毕竟面向不同,一个是面向过程的C语言,一个是面向对象的Java。所以这次我打算起一个数据结构的Java专栏,当然由于之前已经写过有些地方会写得简洁一点,模糊的话大家可以去看一下前面得文章哦。今天是关于泛型的哦!

2302_81249757的博客 3860

Java算法与数据结构系列(一)排序 sort

文章目录Java算法与数据结构系列(一)排序 sort选择排序冒泡排序快速排序 Java算法与数据结构系列(一)排序 sort github上发现一个算法与数据结构学习的仓库,而且是用java实现的,开个专栏来学习一下。。。 代码会同步到github: ----------------------------分割线------------------------------ 为了代码的规范性,我们先来写一个排序的接口吧 package sort; /** * sort interface // 排序 ja

lzr_ps的博客 338

JAVA数据结构系列 栈

java数据结构系列之栈 手写栈 1.利用链表做出栈,因为栈的特殊,插入删除操作都是在栈顶进行,链表不用担心栈的长度,所以链表再合适不过了,非常好用,不过它在插入和删除元素的时候,速度比数组栈慢,因为它要维护自己的指针(Next)引用。 package com.rsc.stack; import java.util.LinkedList; /** * 利用链表实现的栈 * @a...

diyu8056的博客 76

Java 数据结构系列

数据结构学习推荐(Java数据结构和算法)

热心网友 1185

JAVA与C#对照学习系列 —— 数据结构

    我个人的感觉:通过练习数据结构在不同语言中的实现,可以很快熟悉新学语言,了解彼此的差异。    Java类中的嵌套类可以就是类中的一个field,可以在嵌套类中直接访问其它field,而嵌套类中的field也对外面暴露!而在C#中情况却与JAVA不同,其又没有C++的friend关键字!怎么办?我在网上看到一个网站号称《 Data Structures and Algorithms wit

webpower的专栏 1008

【愚公系列】Java教学课程 045-数据结构

数据结构是计算机科学中的一种抽象数据类型,是指数据对象以及组成数据对象的各个元素之间的关系。数据结构包括数组、链表、树等,它们可用于描述不同类型的数据,并提供高效的操作数据的方式。通过合理地设计和使用数据结构,可以实现更加高效、稳定、可靠的程序。数据结构也是算法设计中的重要内容,对于不同的问题,需要选择合适的数据结构才能得到更优的解决方案。数据结构的作用是为了更好地组织和管理数据,使得我们可以更加高效地访问和处理数据。

愚公智库 5万+

Java八股系列——Java数据结构

Enumeration接口中定义了一些方法,通过这些方法可以枚举(一次获得一个)对象集合中的元素。这种传统接口已被迭代器取代,虽然Enumeration 还未被遗弃,但在现代代码中已经被很少使用了。尽管如此,它还是使用在诸如Vector和Properties这些传统类所定义的方法中,除此之外,还用在一些API类,并且在应用程序中也广泛被使用。Enumeration只是接口,具体使用还得靠实现类,下面是使用示例。

eyes++的博客 236

java架构师进阶独孤九剑系列(一):数据结构与算法

“ 架构师进阶系列之独孤九剑,这套秘籍如果你能完整学会,年薪至少60万起,今天是架构师进阶连载开启篇。 Java程序员成长为架构师进阶步骤 未来我会用1-2个月在实战为大家讲解架构师的九大必备技能。 架构师进阶系列之独孤九剑九大步骤: 1-程序设计和开发 2-操作系统要求 3-Java开发 4-Web开发 5-网络安全 6-数据库设计 7-架构设计要求 8-运维能力要求 9-产品业务要求 1...

一个有情怀的程序猿博客 424

Java快速入门集合框架和泛型图解(少代码,多图解,快速掌握Java数据结构)——Java基础系列

本文只是面向入门级的基础概念解读,包含快速使用讲解,代码少关键多,主要是读起来不累 ——尽管不具备真正深入的难点,图例丰富,通俗易懂,适合新手小白入门。

代码之狐的博客 899

Java数据结构和算法系列———队列

目录 1、队列的基本概念 2、Java模拟单向队列实现 3、双端队列 4、优先级队列 5、总结 1、队列的基本概念 队列(queue)是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 队列的数据元素又称为队...

128

Java数据结构系列之单向链表

Java数据结构系列之单向链表 /** * @description Node结点类 * @author HAHACHEN * @date 2020/9/24 */ class Node { protected Integer orderNo; protected String data; protected Node next; public Node(Integer orderNo, String data, Node next) {

IT_TERRY的博客 208
上一篇: 《java基础》高效拼接字符串
下一篇: java数据结构系列——深入了解“栈”结构
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值