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

系列文章目录

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

初始集合框架和数据结构

  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.mzph.cn/news/877588.shtml

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

相关文章

文件的读写(标准库函数与系统调用函数),文件描述符的复制

文件描述符 为了解决内核对象在可访问性与安全”性之间的矛盾,Unix系统通过所谓的文件描述符,将位于内核空间中的文件表项间接地提供给运行于用户空间中的程序代码。为了便于管理在系统中运行的各个进程,内核会维护一张存有各进程信息的列表&…

C++智能指针配合STL模板类

代码 #include <unordered_map> #include <set> #include <memory> class ResID { public:using SP std::shared_ptr<ResID>;ResID() default;ResID(const std::string& id, const std::string& type): m_id(id), m_type(type){}public:~Re…

HoloLens 坐标系统 Coordinate systems

Hololens 和 Unity 空间坐标系统-CSDN博客文章浏览阅读79次。这意味着&#xff0c;在 X、Y 或 Z 轴上相距 2 个单位的物体&#xff0c;在混合现实中的渲染效果是相距 2 米。虽然左手坐标和右手坐标是最常见的系统&#xff0c;但 3D 软件中也会使用其他坐标系。例如&#xff0c;…

Veritas NBU8.3.0.2 安装部署环境备份实施介绍(篇一)

1、本次有两台NBU服务器&#xff0c;都是Windows Server 2016 Standard 2、一台作为Master Server角色&#xff0c;另外一台则作为Media Server角色 3、两台服务器均已加入域并关闭防火墙 4、后期备份客户端会有Linux和Windows系统&#xff0c;也会对接VCenter无代理备份虚拟…

xss靶场详解

目录 1.第一题 2.第二题 3.第三题 4.第四题 5.第五题 6.第六题 7.第七题 8.第八题 1.第一题 在源码script标签里边&#xff0c;innerhtml是用于访问或修改 HTML 元素内的 HTML 内容的&#xff0c;这里是访问spaghet这个元素的&#xff0c;并通过括号里面的东西搜索当前…

图搜v1.1.3 - 图库几千张图片再也不怕了

图搜是一款使用先进的自然语言处理技术的相册搜索助手&#xff0c;支持通过简单的描述来搜索相册中的图片&#xff0c;如“草丛中的猫”或“公园里的狗”。这款应用完全免费、无需内购&#xff0c;且完全离线使用&#xff0c;保证了用户数据的安全与私密性。它的高效索引系统确…

法律知识有奖竞答

关于开展线上法律知识竞赛活动的通知 根据字【2024】008号 《关于进一步推动普法贯穿于各行业各领域的倡议》的相关要求&#xff0c;特举办本次线上答题活动。 一、活动时间 2024年08月19日08:00至08月25日24:00 二、活动对象 公司全体成员 三、竞赛规则 1、每人每天拥有1次…

Jenkins UI与接口自动化测试持续集成实战

篇幅较长&#xff0c;要耐心阅读哦~ 基础知识简要回顾 持续集成、持续交付的好处与产生的必然性Jenkins服务的搭建方法Jenkins节点管理与用户权限Jenkins插件Jenkins父子多任务关联运行Jenkins报警机制 目录 SeleniumUI自动化测试持续集成演练接口自动化测试持续集成演练 …

vue+echarts:echarts地图页面跳转

在setOption的平级写点击事件&#xff0c;给chart添加click监听 getmapChart.setOption({......})//和数据对应即可 //点击区域实现页面跳转getmapChart.on(click,function(params){// console.log(params);switch(params.name){case "xxxx":top.location.href"…

JUC阻塞队列(四):DelayQueue

1、DelayQueue介绍 DelayQueue 是一个延迟队列&#xff0c;生产者写入一个数据&#xff0c;这个数据具有被直接消费的延迟时间&#xff0c; 让数据具有延迟的特性。 DelayQueue底层也是基于二叉堆来实现的&#xff0c;DelayQueue本就是基于PriorityBQueue 实现的。 二叉堆结构每…

Kubernetes Pod入门

在 Kubernetes 中&#xff0c;一个重要的概念就是 Pod(豆英)&#xff0c;Kubernetes 并不是直接管理容器他的最小管理单元叫做 Pod。的&#xff0c; 在 Docker 的应用中&#xff0c;我们把一个应用程序封装在一个镜像中&#xff0c;之后启动这个镜像并映射一个宿主机端…

x-cmd pkg | dua - 一个可以方便地了解给定目录的磁盘空间使用情况的工具

目录 简介用户首次快速实验指南技术特点竞品和相关项目进一步阅读 简介 dua 是 Disk Usage Analyzer 的简写&#xff0c;该工具可以快速查看给定目录的磁盘空间使用情况。 对于想要深入了解磁盘空间使用情况并有效管理存储的用户来说&#xff0c;Dua 是一个很有价值的工具。通…

华硕飞行堡垒键盘全部失灵【除电源键】

华硕飞行堡垒FX53VD键盘全部失灵【除电源键】 前言一、故障排查二、发现问题三、使用方法总结 前言 版本型号&#xff1a; 型号 ASUS FX53VD&#xff08;华硕-飞行堡垒&#xff09; 板号&#xff1a;GL553VD 故障情况描述&#xff1a; 键盘无法使用&#xff0c;键盘除开机键外…

轮式自主移动机器人的研究发展与ROS环境搭建

前言&#xff1a; 在轮式自主移动机器人的研发过程中&#xff0c;编程技术的重要性不言而喻。编程不仅涉及到机器人各种功能模块的协调运作&#xff0c;还决定了机器人能否实现复杂的行为决策和控制。首先&#xff0c;编程技术为机器人提供了“大脑”&#xff0c;从而使其能够感…

暑假请停止躺平!0门槛赚22万奖金!

在这个数字化时代&#xff0c;数据成为推动社会进步的重要力量。您是否想运用手中的数据&#xff0c;为治理与环保领域贡献力量&#xff1f;现在&#xff0c;机会就在眼前&#xff01; 2024年厦门市大数据创新应用大赛正在火热进行中&#xff0c;我们诚邀全国高等院校在校学生…

工厂现场多功能帮手,三防平板改善管理体验

随着制造业的智能化变革&#xff0c;信息化、自动化和智能化逐渐成为工厂管理的新常态。在这一波技术浪潮中&#xff0c;三防平板作为一种多功能的工作工具&#xff0c;正在逐步改善工厂现场的管理体验。 一、三防平板的定义与特点 三防平板&#xff0c;顾名思义&#xff0c;是…

『 Linux 』利用UDP套接字实现简单群聊

文章目录 服务端通过传入命令处理实现远程命令执行使用Windows编辑UDP客户端实现Windows远程控制Linux接收套接字的其他信息UDP套接字简单群聊服务端UDP套接字简单群聊客户端运行测试及分离输入输出 参考代码 服务端通过传入命令处理实现远程命令执行 『 Linux 』利用UDP套接字…

springboot医疗远程管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图详细视频演示技术栈系统测试为什么选择我官方认证玩家&#xff0c;服务很多代码文档&#xff0c;百分百好评&#xff0c;战绩可查&#xff01;&#xff01;入职于互联网大厂&#xff0c;可以交流&#xff0c;共同进步。有保障的售后 代码参考数据库参…

el-table实现动态添加行,并且有父子级联动下拉框

<template><div><el-button click"addRow">添加行</el-button><el-table :data"tableData" style"width: 100%"><el-table-column label"序号"type"index"width"100"align"…

【ARM+Codesys 客户案例 】基于RK3568/A40i/STM32+CODESYS开发的控制器在自动输送分拣系统上的应用,支持定制

2021年“京东618” 累计下单金额超3438亿元,再次刷新纪录! 从下单到收货&#xff0c;各种货品均可在短短几天内通过四通八达的物流网络送达全国任何一个家庭。电子商务和快递物流的迅猛发展对仓储、分拣、配送效率和准确性均提出了更高的要求&#xff0c;加速了智能物流的发展。…