目录

前言

如何学好数据结构

1. 什么是集合框架

2. 集合框架的重要性

3. 背后所涉及的数据结构以及算法

3.1 什么是数据结构

3.2 容器背后对应的数据结构

3.3 相关java知识

3.4 什么是算法

3.5 基本关系说明(重要,简单了解)


前言

什么是数据结构?

  • 数据结构是一门单独的学科,它和语言没有关系。
  • 数据 + 结构:用来描述和组织数据的
  • 为什么会有那么多的数据结构?︰是因为我们描述和组织数据的方式不一样所以我们有很多种数据结构,来应付不同的场景来使用。
  • 经常会听到同学问:C++的数据结构和Java的数据结构有什么区别?
  • 这个问题是错误的问题。数据结构的实现只是用的工具(编程语言)不一样。当前数据结构的思想一样的。
  • C++和Java只是语言不一样,工具不一样。

什么是数据库?

  • 数据库(服务器MySQL)也是单独的学科。oracle数据库是付费的,一般大的企业在用。
  • 数据库是用来持久化存储数据的。数据库底层用到数据结构来描述存储的数据。
  • 数据库服务器-》数据库s-》表s  -》数据。

什么是集合类?

  • Java当中的集合类其实就是被封装好的数据结构。
  • 写博客的逻辑:先讲某个数据结构具体的实现,然后类比在Java当中封装好的数据结构类(集合)。
  • 原始的数据结构 -》告诉你Java封装成的集合对应的是哪个 -》你再用。
  • 在C++中叫STL,在Java中叫集合类或者集合框架。

如何学好数据结构

学好数据结构你会有一个质的飞跃!和别人拉开差距就看数据结构了!!

  1. 多画图
  2. 多思考
  3. 多写代码(不写2遍以上是不会理解的,写5遍基本上问题不大了)

遇见题目:

  1. 如果每个地方不懂,看代码画图。
  2. 看图写代码,不会的再看代码。
  3. 思考
  4. 全部删除,重新画图再写。(这一遍尽量不要频繁看,慢慢脱离代码)

数据结构是一门逻辑非常严谨的学科。理解思想很重要。学习数据结构不仅能锻炼逻辑思维,还能提升对代码书写的流畅度。大大提高代码量。

集合框架及背后的数据结构,怎么理解标题的含义:

  • 集合:就是java写好的一些数据结构
  • 框架:数据结构之间存在一定的联系
  • 数据结构:描述和组织数据的一种方式

1. 什么是集合框架

Java 集合框架(Java Collection Framework),又被称为容器(container)定义在 java.util 包下的一组接口 (interfaces) 和其实现类 (classes)。util 工具,称工具包,因此基本上在Java当中与工具相关的都在util包底下。

其主要表现为将多个元素(element)置于一个单元中,用于对这些元素进行快速、便捷的存储 store 、检索 retrieve 、管理 manipulate ,即平时我们俗称的增删查改 CRUD .

例如,一副扑克牌(一组牌的集合)、一个邮箱(一组邮件的集合)、一个通讯录(一组姓名和电话的映射关系)等等。

类和接口总览:(下图并非把所有的接口,抽象类 ,实现类都给列举出来了。只列举出了重要的部分) 每个实现类都是集合类

  1. 这张图描述了Java当中,类与类,类与接口 之间的关系
  2. 了解清楚,接口与接口之间的关系  extends(拓展)关系
  3. 了解清楚,类与接口之间的关系  implemments 实现的关系
  4. 了解清楚,每个类背后的数据结构大概是个啥?
  5. 重要的接口有四个:List、Queue、Set、Map其他类都是实现了这些接口。

2. 集合框架的重要性

1. 开发中的使用

  • 使用成熟的集合框架,有助于我们便捷、快速的写出高效、稳定的代码。
  • 学习背后的数据结构知识,有助于我们理解各个集合的优缺点及使用场景。

2. 笔试及面试题

3. 背后所涉及的数据结构以及算法

3.1 什么是数据结构

数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。
 

3.2 容器背后对应的数据结构

该阶段,我们主要学习以下容器,每个容器其实都是对某种特定数据结构的封装,大概了解一下,后序会给大家详细讲解并模拟实现:

1. Collection:是一个接口,包含了大部分容器常用的一些方法

2. List:是一个接口,规范了ArrayList 和 LinkedList中要实现的方法

  • ArrayList:实现了List接口,底层为动态类型顺序表
  • LinkedList:实现了List接口,底层为双向链表

3. Stack:底层是栈,栈是一种特殊的顺序表

4. Queue:底层是队列,队列是一种特殊的顺序表

5. Deque:是一个接口

6. Set:集合,是一个接口,里面放置的是K模型

  • HashSet:底层为哈希桶,查询的时间复杂度为O(1)
  • TreeSet:底层为红黑树,查询的时间复杂度为O(log2 N),关于key有序的

7. Map:映射,里面存储的是K-V模型的键值对

  • HashMap:底层为哈希桶,查询时间复杂度为O(1)
  • TreeMap:底层为红黑树,查询的时间复杂度为O(log2 N),关于key有序

3.3 相关java知识

学数据结构前,需要先掌握的一些知识:

  1. 泛型 Generic
  2. 自动装箱 autobox  和自动拆箱 autounbox
  3. Object 的 equals 方法
  4. Comparable 和 Comparator 接口

3.4 什么是算法

  • 算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。
  • 数据结构与算法:相辅相成的

3.5 基本关系说明(重要,简单了解)

  • lterable 接口:有一个for-each() 功能
  • Collection 接口 :用来存储管理一组对象(objects),这些对象一般被成为元素 (elements)
  • List 接口:多半部分为线性结构
  • Queue 接口:队列(其实队列也属于线性结构,但是有一种队列不属于线性结构,如:优先级队列——底层是一个二叉树,树形结 构)
  • PriorityQueue类:优先级队列,每个元素都具备优先级,根据优先级入队出队
  • Deque接口:双端队列
  • Set接口:集合(元素不能重复)
  • SortedSet接口:有序且不能重复的元素集合
  • Map接口:底层是

队列:例如,排队打饭;有队尾和队头,队尾进队头出。

双端队列:有队尾和队头;队尾进队尾出,队头进队头出,两端都可以进也可以出。


好啦Y(^o^)Y,本节内容就到此结束了,感谢大家的阅读浏览,期望大家的一键三连哟!

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P9242 [蓝桥杯 2023 省 B] 接龙数列--DP【巧妙解决接龙问题】

P9242 [蓝桥杯 2023 省 B] 接龙数列--DP 题目 解析什么时候该用 DP?动态规划 vs 其他方法代码 题目 解析 这题没思路,压根没想到DP 😦 看了大神的题解,利用dp记录每一个数结尾的长度,最后再用N-dp中的最大值&#xf…

用《设计模式》的角度优化 “枚举”

枚举应该都有用过,枚举主要的作用是为了方便用户查找和引用枚举。 案例一 下面的枚举逻辑很简单,就是通过枚举值返回不同的结果。 public enum OperationEnum {EQUAL_TO,CONTAINS,START_WITH,END_WITH;public String getOperationValue(String value)…

SQL根据分隔符折分不同的内容放到临时表

SQL Server存储过程里根据分隔符折分不同的内容放到临时表里做查询条件,以下分隔符使用“/”,可修改不同分隔符 --根据分隔符折分不同的内容放到临时表--------------- SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS id, LTRIM(RTR…

Ubuntu切换lowlatency内核

文章目录 一. 前言二. 开发环境三. 具体操作 一. 前言 低延迟内核(Lowlatency Kernel) 旨在为需要低延迟响应的应用程序设计的内核版本。Linux-lowlatency特别适合音频处理、实时计算、游戏和其他需要及时响应的实时任务。其主要特点是优化了中断处理、调…

基于Django创建一个WEB后端框架(DjangoRestFramework+MySQL)流程

一、Django项目初始化 1.创建Django项目 Django-admin startproject 项目名 2.安装 djangorestframework pip install djangorestframework 解释: Django REST Framework (DRF) 是基于 Django 框架的一个强大的 Web API 框架,提供了多种工具和库来构建 RESTf…

VUE3开发-9、axios前后端跨域问题解决方案

VUE前端解决跨域问题 前端页面需要改写 如果无效,记得重启服务器 后端c#解决跨域问题 前端js取值,后端c#跨域_c# js跨域-CSDN博客

DailyNotes 增加提醒功能

TODO:准备给 DailyNotes 增加一个提醒功能,准备接入 AI 来做一些事情。试了一下,非常靠谱。 具体 DailyNotes 和 Ollama 的交互方式,可以直接调用命令行,也可以走网络API。 rayuK2CD9WCYN4 ~ % ollama run deepseek-…

PY32MD320单片机 QFN32封装,内置多功能三相 NN 型预驱。

PY32MD320单片机是普冉半导体的一款电机专用MCU,芯片采用了高性能的 32 位 ARM Cortex-M0 内核,主要用于电机控制。PY32MD320嵌入高达 64 KB Flash 和 8 KB SRAM 存储器,最高工作频率 48 MHz。PY32MD320单片机的工作温度范围为 -40 ~ 105 ℃&…

OpenManus介绍及本地部署体验

1.OpenManus介绍 OpenManus,由 MetaGPT 团队精心打造的开源项目,于2025年3月发布。它致力于模仿并改进 Manus 这一封闭式商业 AI Agent 的核心功能,为用户提供无需邀请码、可本地化部署的智能体解决方案。换句话说,OpenManus 就像…

【贪心算法】简介

1.贪心算法 贪心策略:解决问题的策略,局部最优----》全局最优 (1)把解决问题的过程分成若干步 (2)解决每一步的时候,都选择当前看起来的“最优”的算法 (3)“希望”得…

springboot知识点以及源码解析(2)

web开发--静态规则与定制化 springboot对静态资源的映射规则:在类路径下面定义目录static或public或resources或者META-INF/resources,访问时项目根目录静态资源的名称 在springboot中,如果项目中存在同名的静态资源和同名的动态资源。那么我…

C++:string容器(下篇)

1.string浅拷贝的问题 // 为了和标准库区分,此处使用String class String { public :/*String():_str(new char[1]){*_str \0;}*///String(const char* str "\0") // 错误示范//String(const char* str nullptr) // 错误示范String(const char* str …

使用 vxe-table 导出 excel,支持带数值、货币、图片等带格式导出

使用 vxe-table 导出 excel,支持带数值、货币、图片等带格式导出,通过官方自动的导出插件 plugin-export-xlsx 实现导出功能 查看官网:https://vxetable.cn gitbub:https://github.com/x-extends/vxe-table gitee:htt…

JavaScript数据类型和内存空间

一、JavaScript 数据类型 基本数据类型:字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(Undefined)、Symbol 引用数据类型:对象(Object)、数组(Array)、函数(Fun…

DNS Beaconing

“DNS Beaconing” 是一种隐蔽的网络通信技术,通常与恶意软件(如木马、僵尸网络)相关。攻击者通过定期发送 DNS请求 到受控的域名服务器(C&C服务器),实现与恶意软件的隐蔽通信、数据传输或指令下发。由…

python中采用opencv作常规的图片处理的方法~~~

在python中,我们经常会需要对图片做灰度/二值化/模糊等处理,这时候opencv就是我们的好帮手了,下面我来介绍一下相关用法: 首先,需要安装opencv-python库: 然后,在你的代码中引用: import cv2 最后就是代码了&#x…

CmBacktrace的学习跟移植思路

学习移植CmBacktrace需要从理解其核心功能、适用场景及移植步骤入手,结合理论学习和实践操作。以下是具体的学习思路与移植思路: 一、学习思路 理解CmBacktrace的核心功能 CmBacktrace是针对ARM Cortex-M系列MCU的错误追踪库,支持自动诊断Har…

支付宝当面付java,php,sdk下载

SDK & Demo 获取 - 支付宝文档中心 开放平台服务端 SDK 为了帮助开发者调用开放接口,支付宝提供了开放平台服务端 SDK,包含 Java、PHP、NodeJS、Python 和 .NET 等语言版本,DEMO 中封装了签名 & 验签、HTTP 接口请求等基础功能。 详…

Cocos Creator Shader入门实战(三):CCEffect参数配置讲解

引擎版本:3.8.5 您好,我是鹤九日! 回顾 稍微回顾下前面两篇博客讲解的内容: 一、Cocos渲染效果的实现需要Material材质和Effect资源的互相配合。 二、Effect资源负责Shader片段的编写和属性配置,Material材质负责对E…

AI日报 - 2025年3月10日

AI日报 - 2025年3月10日 🌟 今日概览(60秒速览) ▎🤖 AGI突破 | Anthropic CEO预测强AI最早2026年到来 🔬 SAGE框架提升问答质量61.25%,Reflexion框架将GPT-4成功率提至91% ▎💼 商业动向 | xA…