【数据结构】初识集合框架及背后的数据结构(简单了解)

devtools/2025/3/11 10:09:55/

目录

前言

如何学好数据结构

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. 全部删除,重新画图再写。(这一遍尽量不要频繁看,慢慢脱离代码)

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

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


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.ppmy.cn/devtools/166255.html

相关文章

MyBatis-Plus 与 Spring Boot 的最佳实践

在现代 Java 开发中,MyBatis-Plus 和 Spring Boot 的结合已经成为了一种非常流行的技术栈。MyBatis-Plus 是 MyBatis 的增强工具,提供了许多便捷的功能,而 Spring Boot 则简化了 Spring 应用的开发流程。本文将探讨如何将 MyBatis-Plus 与 Spring Boot 进行整合,并分享一些…

transformer模型介绍——大语言模型 LLMBook 学习(二)

1. transformer模型 1.1 注意力机制 **注意力机制(Attention Mechanism)**在人工智能中的应用,实际上是对人类认知系统中的注意力机制的一种模拟。它主要模仿了人类在处理信息时的选择性注意(Selective Attention)&a…

WPS的付费功能,这款软件可完美平替

因为作者有工作上的需求加上WPS使用批量提取图片需要会员,所以自己使用cursor制作了一个从excel中提取图片的工具。 支持提取Excel中的浮动图片和根据图片链接来下载图片。 Excel Image Extractor Excel图片提取工具 软件的功能非常强大,支持提取Excel中…

HTTP协议与Web开发

🌐 HTTP协议与Web开发完全指南:从原理到实战 一、HTTP协议是什么? HTTP(超文本传输协议) 是互联网上应用最广泛的网络协议,作为Web开发的基石,它具有以下核心特性: 无状态协议&am…

Rabbitmq--延迟消息

13.延迟消息 延迟消息:生产者发送消息时指定一个时间,消费者不会立刻收到消息,而是在指定时间之后才会收到消息 延迟任务:一定时间之后才会执行的任务 1.死信交换机 当一个队列中的某条消息满足下列情况之一时,就会…

调试正常 ≠ 运行正常:Keil5中MicroLIB的“量子态BUG”破解实录

调试正常 ≠ 运行正常:Keil5中MicroLIB的“量子态BUG”破解实录——从勾选一个选项到理解半主机模式,嵌入式开发的认知升级 📌 现象描述:调试与烧录的诡异差异 在线调试时 程序正常运行 - 独立运行时 设备无响应 ! 编译过程 0 Err…

MoonSharp 文档三

MoonSharp 文档一-CSDN博客 MoonSharp 文档二-CSDN博客 MoonSharp 文档四-CSDN博客 MoonSharp 文档五-CSDN博客 7.Proxy objects(代理对象) 如何封装你的实现,同时又为脚本提供一个有意义的对象模型 官方文档:MoonSharp 在现实世界的场景中,脚本往往会超出你的控制范…

RISC-V医疗芯片工程师复合型转型的路径与策略

从RISC-V到医疗芯片:工程师复合型转型的路径与策略 一、引言 1.1 研究背景 在科技快速发展的当下,芯片技术已然成为推动各行业进步的核心驱动力之一。其中,RISC-V 架构作为芯片领域的新兴力量,正以其独特的优势迅速崛起,对整个芯片产业的格局产生着深远影响。RISC-V 架…