首页 > 编程语言 >【Java集合】数据结构与集合的神秘联系,一文读懂!

【Java集合】数据结构与集合的神秘联系,一文读懂!

时间:2023-11-06 18:34:51浏览次数:60  
标签:Java 链表 数组 集合 数据结构 数据 节点

上篇文章中我们对单列集合中常用的方法和遍历查询。通过本文章为我们解惑,好好的字符串用起来不就行了,为什么要用集合这些工具类?本篇文章将简要介绍数据结构,让读者了解它们在计算机中以何种结构方式存在。那么,什么是数据结构呢?下面我们来详细解释。

数据结构

1.1 数据结构有什么用?

数据结构是计算机存储、组织数据的方式。 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。 通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。

数据结构往往同高效的检索算法和索引技术有关。 这句话是啥意思呢? 我们举个简单的例子。就像金庸小说中所写的,武功招式就相当于我们的算法,而数据结构就是我们的内功心法;而武功的高低,不仅仅是武功招式,更重要的是 学会的内功心法。就比如张无忌在学会九阳神功之后,就可以大战六大门派。而数据结构的学习,也会让我们事半功倍。

而数据结构的学习,也会让我们事半功倍。凭借着“数据结构+算法=程序”这句话,Pascal之父获得了图灵奖。

总结来说

  • 数据结构就是一种是将世界上各种数据转化为计算机可以存储和操作的形式,定义了逻辑结构如何在计算机上存储,以及相关的基本操作。

  • 算法是程序猿通过调用不同数据结构的基本操作,从而实现了数据的处理。

而这两点使我们作为程序开发人员的必备基本功,不是一朝一夕就能成为绝世高手的,我们需要一步步去不断的学习积累,积硅步以致千里。

编程学习,从云端源想开始,课程视频、在线书籍、在线编程、一对一咨询……你想要的全部学习资源这里都有,重点是统统免费!点这里即可查看

1.2 常见的数据结构

在计算机学科中,数据结构是一门很重要的基础学科,知识点很多。在这里我们不讲那么多,只讲述我们集合中用到的几种数据结构,同学们可以下去自行学习更多的数据结构的知识。 常用结构三个:数组、链表、红黑树。我们分别来了解一下:

1、数组

数组的定义:

  • 数组是相同类型数据的有序集合

  • 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。

  • 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们.

存储思路:所有数据存储在连续的空间中,数组中的每个元素都是一个具体的数据。
特点:

  • 使用连续分配的内存空间

  • 一次申请一大段连续的空间,需要事先声明最大可能要占的固定内存空间

如下图:

  • 通过索引,查询快

  • 当给数组插入新元素时,数组中的a2,a3,a4整体后移,代价高。

  • 如果插入元素时,数组长度,还要重新创建一个数组,然后循环赋值,代价高

优点: 设计简单,读取与修改表中的任意一个元素的时间都是固定的,速度快 ;
缺点: 容易造成内存浪费;删除或者插入数据需要移动大量数据,速度慢。

2、链表

每个数据单独存在一小块内存中,这个单元叫做节点,每个节点知道下一个节点的地址,叫做单向链表。 每个节点既知道下一个节点地址,又知道上一个节点地址,叫做双向链表。

特点:

  • 使用不连续的内存空间

  • 不需要提前声明好指定大小的内存空间,一次申请一小块,按需申请

  • 查询元素,需要通过节点一次向后查找,直到查找到指定元素

  • 增删元素:只需修改连接节点的地址即可。

优点: 充分节省内存空间,数据插入和删除方便,不需要移动大量数据;
缺点: 查询数据必须按顺序找到该数据,操作麻烦.

3、红黑树

简单理解,就是一种类似于我们生活中树的结构,只不过每个节点最多只有两个叶子。计算机世界的树,刚好与我们现实中的树成镜像相反,树根在上,树枝在下。二叉树如下图:

而我们要说的是二叉树的一种比较有意思的叫做红黑树,红黑树本身就是一颗二叉查找树。我们在这里只需要记住它的特点 可以非常方便的对树中的所有节点进行排序和检索。

小结

本文介绍了三种常用的数据结构:数组、链表和红黑树,以及这些数据结构在计算机中的重要意义。通过学习这些内容,我们可以逐步深入了解计算机世界。

标签:Java,链表,数组,集合,数据结构,数据,节点
From: https://www.cnblogs.com/ydyxcode/p/17813391.html

相关文章

  • java高并发必须知道的概念
    同步(Synchronous)和异步(Asynchronous)同步和异步通常来形容一次方法调用,同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。异步方法调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续的操作。而异步方法通常会在另外一个线程中“真实”地......
  • Java中的NoClassDefFoundError报错解析
    半夜睡得正香的时候,突然接到警告电话,于是翻起身就打卡电脑连上环境查看是什么情况?登录上之后发现有个微服务占用的句柄数量一直在持续上涨,最终导致了微服务内存溢出挂掉了。这个微服务在运行的过程中会建立SSH连接,且之前这个微服务已经遇到过很多次类似的情况了,因此第一反应是哪里......
  • javaWeb&springMVC
    Servlet1:servlet定义servlet是开发动态web的一门技术,通过servlet实现与用户的动态交互。2:使用方式(1)javaWeb中只需要继承HttpServlet接口,重写其中的doGet和doPost方法即可编写一个servlet;写好servlet程序后需要在web.xml文件中编写映射,相当于将我们缩写的servlet注册到web服务......
  • 接口写完直接调试,JAVA工程师必用!
    平时我们在写完接口需要填入postman、Apipost等工具进行接口调试,今天给大家推荐一款IDEA插件Apipost-helper,写完代码直接可以进行调试,而且支持生成接口文档,JAVA工程师必用!可以点击下方链接或在插件商店中搜索安装如下图:https://plugins.jetbrains.com/plugin/22676-apipost-helper-......
  • 接口写完直接调试,JAVA工程师必用!
    平时我们在写完接口需要填入postman、Apipost等工具进行接口调试,今天给大家推荐一款IDEA插件Apipost-helper,写完代码直接可以进行调试,而且支持生成接口文档,JAVA工程师必用!可以点击下方链接或在插件商店中搜索安装如下图:https://plugins.jetbrains.com/plugin/22676-apipost-help......
  • Java根据URL截图的4种方式
    方案选择XHTMLRenderer(不要用)PhantomJs(三方库,已停更)Puppeteer(Chrome团队开发和维护)Selenium(支持多浏览器、多语言,服务器需要安谷歌浏览器)一、XHTMLRenderer(不要用)XHTMLRenderer它是一个Java库,用于将XHTML文档渲染为图像或PDF格式。也不要用它来转PDF1、XHTMLRenderer......
  • java数据类型
    一、数据类型Java中主要有8中基本数据类型,分别是byte,short,int,long,char,boolean,float,double,具体如下:1、boolean:数据值只有true或false,适用于逻辑计算。2、char:char型(字符型)数据在内存中占用2个字节。char型数据用来表示通常意义上的字符,每个字符占2个字节,Java字符采用Unicode......
  • java object 转为 json
      JSONObjectjsonObject=JSONObject.fromObject(map)执行到这的时候没有任何反应的原因及解决办法 JSONObject,JSONArray使用手册http://www.open-open.com/lib/view/open1391842371442.html JSONObject.fromObject(map)(JSON与JAVA数据的转换) 使用JSON时,除了要导入JSON网站上......
  • Java float保留两位小数或多位小数
     Javafloat保留两位小数或多位小数方法1:用Math.round计算,这里返回的数字格式的.   floatprice=89.89;intitemNum=3;floattotalPrice=price*itemNum;floatnum=(float)(Math.round(totalPrice*100)/100);  //如果要求精确4位就*10000然后/10000方法2(OK):用DecimalFo......
  • java中判断从数据库中取出的字段是否为空
    方法一:最多人使用的一个方法,直观,方便,但效率很低.1:if(s==null||s.equals(""));方法二:比较字符串长度,效率高,是我知道的最好一个方法.2:if(s==null||s.length()<=0);方法三:JavaSE6.0才开始提供的方法,效率和方法二几乎相等,但出于兼容性考虑,推荐使用......