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

系列文章目录

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

初始集合框架和数据结构

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


一、 集合框架的初步认识

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(返回两个集合的交集)等。

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

  • 23
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值