集合及数据结构第一节————初识集合框架和数据结构

news2024/11/16 18:13:40

系列文章目录

集合及数据结构第一节————初识集合框架和数据结构

初始集合框架和数据结构

  1. 什么是集合框架?
  2. 集合框架的重要性
  3. 背后所涉及的数据结构以及算法
  4. 数据结构的基本概念和术语
  5. 逻辑结构和物理结构
  6. 数据类型

文章目录

  • 系列文章目录
    • 集合及数据结构第一节————初识集合框架和数据结构
  • 初始集合框架和数据结构
  • 一、 集合框架的初步认识
    • 1.什么是集合框架?
    • 2.集合框架的重要性
      • 1. 开发中的使用
    • 3.背后所涉及的数据结构以及算法( * *
      • 1 什么是数据结构
      • 2 容器背后对应的数据结构
      • 3 相关java知识
  • 二、数据结构的初步认识
    • 1.数据结构的基本概念和术语
      • 1. 数据
      • 2.数据元素
      • 3. 数据项
      • 4.数据对象
      • 5. 数据结构
    • 2.逻辑结构和物理结构( *
      • 逻辑结构
        • 1.集合结构
        • 2.线性结构
        • 3.树形结构
        • 4. 图形结构
      • 物理结构
        • 1. 顺序存储结构
        • 2. 链式存储结构
        • 3. 索引存储结构
        • 4. 散列存储结构
    • 3.数据类型
      • 数据类型定义
      • 抽象数据类型


一、 集合框架的初步认识

1.什么是集合框架?

java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组接口 interfaces和其实现类 classes 。
其主要表现为将多个元素 element 置于一个单元中,用于对这些元素进行快速、便捷的存储 store 、检索 retrieve 、管理 manipulate ,即平时我们俗称的增删查改 CRUD 。
例如,一副扑克牌(一组牌的集合)、一个邮箱(一组邮件的集合)、一个通讯录(一组姓名和电话的映射关系)等等

类和接口总览
在这里插入图片描述
Java的集合类和关系不一定只有上图,上图只是描述了部分重要的类和常见的类。

2.集合框架的重要性

1. 开发中的使用

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

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

1 什么是数据结构

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

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( ),关于key有序的
  7. Map:映射,里面存储的是K-V模型的键值对
    • HashMap:底层为哈希桶,查询时间复杂度为O(1)
    • TreeMap:底层为红黑树,查询的时间复杂度为O( ),关于key有序的

3 相关java知识

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

二、数据结构的初步认识

1.数据结构的基本概念和术语

1. 数据

数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材。它是计算机中可以操作的对象,是能被计算机识别,接收,处理的所有符号的集合。数据不仅包括整形,浮点型等数值类数据,还包括字符等非数值类数据。

2.数据元素

数据元素(data element)是数据的基本单位,它在计算机中通常被作为一个整体进行处理。

3. 数据项

数据项(data item)是数据的不可分割的最小单位,一个数据元素可以由若干个数据项组成。

4.数据对象

数据对象(data object)是具有相同性质且特征相同的数据元素的集合,是数据的一个子集。

5. 数据结构

在计算机中,数据元素并不是孤立的,杂乱无序的,而是存在特定的逻辑关系,,我们把这种关系叫做数据结构(logic structure)。

2.逻辑结构和物理结构( *

逻辑结构

1.集合结构

集合结构:集合结构的数据元素之间除了同属于一个集合的关系外,它们没有其他任何关系。

在这里插入图片描述

2.线性结构

线性结构:结构中的数据元素之间存在一对一的关系。
在这里插入图片描述

3.树形结构

树形结构:结构中的数据元素之间存在一对多的层次关系。
在这里插入图片描述

4. 图形结构

图形结构:结构中的数据元素之间存在多对多的关系。
在这里插入图片描述

物理结构

数据的存储结构(physical structure)是数据的逻辑结构在计算机内存中的存储方式,又被称为物理结构。它研究的是数据的逻辑结构在计算机中的实现方法,包括数据元素的表示和元素间关系的表示。一种逻辑结构通常可以采用多种存储方式。

1. 顺序存储结构

顺序存储结构(Sequential Storage Structure):数据元素按照其逻辑顺序在内存中连续存储。这是最简单和常见的存储结构,适用于线性表等序列型结构。

2. 链式存储结构

链式存储结构(Linked Storage Structure):数据元素通过指针相互链接,在内存中非连续存储。每个数据元素包含指向下一个元素的指针。链式存储结构适用于动态数据结构,如链表和树。

3. 索引存储结构

索引存储结构(Indexed Storage Structure):通过建立索引表来存储数据元素的地址和关键字,索引表按照关键字的顺序进行排列。通过索引表可以快速找到想要的数据元素。常见的索引存储结构有顺序索引、散列索引等。

4. 散列存储结构

散列存储结构(Hashed Storage Structure):通过散列函数将关键字映射到存储位置。散列存储结构适用于需要通过关键字快速查找元素的情况,如哈希表。

3.数据类型

数据类型定义

数据结构中的数据类型定义是指一组值和操作的集合,其定义包括这些值的种类、它们如何表示、以及对它们执行的操作。例如,在C语言中数据类型分为基本类型和构造类型。基本类型包括整形、浮点型、字符型等,构造类型包括数组、结构、联合、指针、枚举型、自定义类型等。指针数据类型可用于创建更复杂的数据结构,例如数组、链表、栈、队列、树和图等。

抽象数据类型

抽象数据类型(Abstract Data Type,ADT)是指具有特定操作和属性的数据类型,其实现方式并不确定,只是一种抽象的描述。

ADT 的基本定义通常由三个部分组成:

  1. 数据的表示,描述数据对象的基本元素以及它们之间的关系。
  2. 数据的操作,描述数据对象上的基本操作,包括建立、销毁、查找、插入、删除等。
  3. 对数据类型的约束条件,描述数据对象必须满足的条件,包括数据类型的定义域、取值范围、存储分配等。

以下是几个 ADT 的定义和例子:

  1. 栈(Stack)

数据的表示:栈是一种线性数据结构,可以想象成一堆盘子,只能从最上面取盘子,也只能往最上面放盘子。

数据的操作:栈上的基本操作包括 push(压栈)、pop(弹栈)、top(返回栈顶元素)、isEmpty(判断栈是否为空)、isFull(判断栈是否已满)等。

对数据类型的约束条件:栈通常有一个大小限制,且只能从栈顶进行操作。

  1. 队列(Queue)

数据的表示:队列也是一种线性数据结构,可以想象成排队,先进先出。

数据的操作:队列上的基本操作包括 enqueue(入队)、dequeue(出队)、front(返回队头元素)、rear(返回队尾元素)、isEmpty(判断队列是否为空)等。

对数据类型的约束条件:队列的大小可能有限制,且只能从队头或队尾进行操作。

  1. 集合(Set)

数据的表示:集合是一种非线性数据结构,由一组元素构成,元素之间无序,不可重复。

数据的操作:集合上的基本操作包括 add(添加元素)、remove(删除元素)、contains(判断元素是否存在)、size(返回集合大小)、intersection(返回两个集合的交集)等。

对数据类型的约束条件:集合中的元素是无序、不可重复的。

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

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

相关文章

机器学习/自主系统与亚当·斯密

人工智能中的机器学习和自主系统是当前科技领域的热门话题,它们与亚当斯密的经济学理论之间可能存在一些潜在的联系和启示。亚当斯密的经济学理论主要关注市场经济的运行和资源分配。他的核心观点是,通过市场机制的作用,个体追求自身利益的行…

算法日记day 41(动归之最长序列问题)

一、最长递增子序列 题目: 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0…

一款免费的开源支付网关系统,支持X宝、某信、云闪付等多种支付方式,提供收单、退款、聚合支付、对账、分账等功能(附源码)

前言 在数字化浪潮中,电子-商务和移动支付迅速崛起,支付系统成为企业运营的核心组件。然而,现有支付处理方案常面临成本高、集成复杂、系统耦合度高等挑战。 这些问题不仅增加了企业负担,也制约了业务的快速迭代和创新。市场迫切…

Tomcat的核心文件讲解

参考视频&#xff1a;对应视频 server.xml中的以下部分可修改&#xff1a; 1.connector标签里的port可以修改。--修改端口号 Tomcat默认端口号&#xff1a;8080 <Connector connectionTimeout"20000" maxParameterCount"1000"port"8080" prot…

Mac文件需要分卷压缩怎么办 Mac上怎么解压分卷压缩的文件

在处理大型文件的传输和存储的时候&#xff0c;Mac用户常面临文件大小超过限制的问题。为了有效管理这些大文件&#xff0c;分卷压缩成为一种必不可少的解决方案。Mac文件需要分卷压缩怎么办&#xff1f;Mac上怎么解压分卷压缩的文件&#xff1f;本文将向你介绍如何使用BetterZ…

STM32F103之DMA

DMA简介 DMA&#xff0c;即Direct Memory Access&#xff0c;是一种在无需CPU参与的情况下&#xff0c;将数据在存储器&#xff08;单片机的RAM&#xff09;和外设&#xff08;一般是I/O设备&#xff09;之间高效传输的硬件机制。实现这种功能的集成电路单元叫做DMA Controlle…

北京大学数学课程相关视频

今天无意中发现了一个网站&#xff1a;北京大学教学媒体资源服务平台媒体资源服务平台-北京大学&#xff0c;发现里面有一些精品的课程&#xff0c;于是将里面的数学相关可成整理出来。 北大精品课 离散数学&#xff08;2013&#xff09; 屈婉玲 课程链接&#xff1a;媒体资源…

Bugku-web-Simple_SSTl_1

开启环境 翻译一下 他说 您需要输入一个名为flag的参数。 SSTL 是一个模板注入, SECRET KEY:是flask 一个重要得配置值 需要用以下代码来加密 /?flag{{config.SECRET KEY}}(注意大小写),或直接 /?flag{{config}} 关于SSTL注入 SSTL注入&#xff0c;通常指的是‌服务器端…

Vxe UI vue vxe-table 实现表格数据分组功能,根据字段数据分组

Vxe UI vue vxe-table 实现表格数据分组功能&#xff0c;根据字段数据分组 实现数据分组功能 基于树结构功能就可以直接实现数据分组功能&#xff0c;代码如下&#xff1a; <template><div><vxe-button status"primary" click"listToGroup()&…

Self-Attention自注意力机制解读(2):图解版!

文章目录 一、前言二、流程解读1.它整体做了一件什么事2.多层Self-attention3.self-attention做了一件什么事4.具体流程 三、流程的矩阵表示三、Softmax层的解释 一、前言 上一篇文章 Self-Attention自注意力机制&#xff1a;深度学习中的动态焦点 | 手把手实例解析 看不懂你打…

Keepalived实验

keepalived在架构中的作用 LVS和HAProxy组成负载均衡 调度器LVS&#xff08;四层&#xff09;后端服务器&#xff08;多&#xff09; LVS&#xff1a;优点是速度快&#xff0c;性能要求不高&#xff0c;但是没有对后端服务器的健康检测&#xff1b; HAProxy&#xff1a;有后…

有名管道 | 信号

匿名管道由于没有名字&#xff0c;只能用于具有亲缘关系的进程间通信。 为了克服这个缺点&#xff0c;就提出了有名管道&#xff08;FIFO&#xff09;&#xff0c;也称为命名管道、FIFO文件。 有名管道 FIFO在文件系统中作为一个特殊的文件而存在并且在文件系统中可见&#…

8个最佳iMacros替代方案(2024)

iMacros作为一款经典的网页自动化工具&#xff0c;多年来帮助无数用户自动化了繁琐的网页任务。然而&#xff0c;随着技术的进步&#xff0c;越来越多功能更强大、界面更友好的替代方案涌现&#xff0c;为用户提供了更多选择。如果你正在寻找2024年最好的iMacros替代工具&#…

中国智能物流系统集成玩家图谱:很全

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 上海欣巴自动化科技股份有限公司 总部&#xff1a;上海服务行业&#xff1a;快递、电商、服装、零售、医药、食品饮料等解决方案&#xff1a;自动化分拣输送系统&#xff1b;控制软件…

linux下tomcat nio 底层源码调用系统函数处理流程

linux tomcat使用nio处理请求 调用jvm native C 底层调用系统函数源码原理 ##Acceptor接受socket socket endpoint.serverSocketAccept(); ##NioEndpoint serverSock.accept() ##ServerSocketChannelImpl n accept(this.fd, newfd, isaa); ##ServerSocketChannelImpl a…

Linux的安装和使用

Linux 第一节 Linux 优势 1. 开源 为什么这么多的的设备都选择使用 Linux&#xff1f;因为它是开源软件&#xff08;open source software&#xff09;&#xff0c;具有不同的含义。使用一个安全的操作系统工作变得必不可少的事&#xff0c;而 Linux 恰好满足了这个需求。因…

Golang | Leetcode Golang题解之第344题反转字符串

题目&#xff1a; 题解&#xff1a; func reverseString(s []byte) {for left, right : 0, len(s)-1; left < right; left {s[left], s[right] s[right], s[left]right--} }

vue3ts+element-plus实现点击el-select下拉选择内容填充和编辑内容

需求在填写报表时&#xff0c;既可以选择下拉选项&#xff0c;还可以编辑选的内容&#xff0c; 找了elementUi没有现成的就自己组装一个 效果&#xff1a; 贴代码&#xff1a; 在components下新建文件夹TextareaSelect&#xff0c;再新建index.vue和interface.ts &#xff08;…

AIGC创新应用技术实践:成都技术生态沙龙全回顾

AIGC创新应用技术实践&#xff1a;成都技术生态沙龙全回顾 2024年8月17日下午&#xff0c;我有幸作为CSDN校园主理人参加了在成都举办的AIGC创新应用技术实践沙龙活动。 此行也见到了许许多多的行业大佬&#xff0c;得到的收获非常之多&#xff0c;赶了1300公里的路&#xff0…

getActivePinia was called with no active Pinia

如果你是从vuex转向使用pinia&#xff0c;那么你可能遇到这个问题getActivePinia was called with no active Pinia. Did you forget to install pinia?。明明已经安装了pinia&#xff0c;为什么会有这个提示呢&#xff1f; 原因是你可能在setup的组件之外使用了useStore 根本…