List-顺序表--1

ops/2025/1/7 15:22:34/

目录

1、List介绍

2、线性表

3、顺序表

4、实现自己的顺序表

4.1、display方法

4.2、add方法

4.3、contains方法

4.4、indexOf方法

4.5、get方法

4.6、set方法

4.7、remove方法

4.8、size方法

4.9、clear方法


1、List介绍

List是一个接口,继承自Collection

站在数据结构的角度来看,List就是一个线性表,即n个具有相同类型元素的有限序列,在该序列上可以执行增删改查以及变量等操作

List 常用方法如下:

2、线性表

线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构常见的线性表:顺序表、链表、栈、队列

线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物 理上存储时,通常以数组和链式结构的形式存储

3、顺序表

顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。(顺序表:其实是一个动态扩容的数组)

为了更好的理解数据结构,我们先实现自己的顺序表,了解底层逻辑

4、实现自己的顺序表

定义一个IList接口(非必须),接口中的功能如下:

创建一个 MyArrayList 类并实现 IList 接口,重写 IList 中的所有方法

定义 elem 数组,用于存放数据;uesdSize,用于记录当前数组中数据个数

提供一个默认不带参数的构造方法,初始化数组容量为10;再提供带一个参数的构造方法,自定义初识容量

4.1、display方法

4.2、add方法

数据结构是一门逻辑非常严谨的学科,在实现具体功能之前,需要先判断合不合法

在add方法中,要先判断数组容量是否为满,满则扩容(copyOf)

把扩容写成一个方法,用 private 封装;这里用封装,是因为这个功能是解决其他功能需要包含的,只为当前类中的方法服务不是提供给用户用的

默认在数组最后新增 的实现

在pos位置新增元素,需要先判断 pos 位置合不合法,合法范围在 0 <= pos <= usedSize。例如,数组中有3个元素,只能在 [0,3] 下标插入,不能在 4 或 5 下标插入,因为在数据结构中每次存储数据的时候,必须有一个前驱信息

^

此时的处理方式是,再写一个 checkPosOnAdd 方法来检查pos的合法性,内容是当 pos 不合法时抛出一个异常;再自定义一个运行时异常 PosIllegality

在调用 checkPosOnAdd 方法时可能会抛出异常,所以要在这个方法后加上异常声明

在pos位置新增元素 的实现,使用 try-catch 的方式处理异常

4.3、contains方法

4.4、indexOf方法

4.5、get方法

先判断 pos 位置合法性,这里使用 checkPosOnGetAndSet 方法;再检查数组是否为空,这里采用的是抛出异常的方式,创建一个运行时异常 MyArrayListEmpty

4.6、set方法

4.7、remove方法

4.8、size方法

4.9、clear方法

一般情况下,直接把usedSize置为0

当顺序表中存储的是引用类型时,不能简单的将usedSize置为0,需要将数组一个一个置空


http://www.ppmy.cn/ops/147823.html

相关文章

HTTP vs HTTPS

HTTP 协议 HTTP 协议介绍 HTTP 协议&#xff0c;全称超文本传输协议&#xff08;Hypertext Transfer Protocol&#xff09;。顾名思义&#xff0c;HTTP 协议就是用来规范超文本的传输&#xff0c;超文本&#xff0c;也就是网络上的包括文本在内的各式各样的消息&#xff0c;具…

【数据分析实战】24年T4某二手车交易平台数据分析

文章目录 引言数据概述与处理数据特征介绍数据预处理 数据分析1. 价格与折旧率分析折旧率分析计算折旧率 可视化 2. 品牌构成分析品牌分布可视化 3. 地域分布与市场分析城市交易分布可视化 4. 车龄对价格的影响车龄与价格的关系可视化 主要发现写在最后 引言 二手车市场近年来…

实时记录和查看Apache 日志

Apache 是一个开源的、广泛使用的、跨平台的 Web 服务器&#xff0c;保护 Apache Web 服务器平台在很大程度上取决于监控其上发生的活动和事件&#xff0c;监视 Apache Web 服务器的最佳方法之一是收集和分析其访问日志文件。 Apache 访问日志提供了有关用户如何与您的网站交互…

[读书日志]8051软核处理器设计实战(基于FPGA)第三篇:8051 keil编程配置 C语言开发流程 中断程序实例

第一篇https://blog.csdn.net/m0_74021449/article/details/144796689 第二篇https://blog.csdn.net/m0_74021449/article/details/144813103 3.8051中断与keil开发流程 3.1 keil的下载与概述 关于keil&#xff0c;大家都并不陌生&#xff0c;它是开发51单片机和ARM架构的32…

enzymejest TDD与BDD开发实战

一、前端自动化测试需要测什么 1. 函数的执行逻辑&#xff0c;对于给定的输入&#xff0c;输出是否符合预期。 2. 用户行为的响应逻辑。 - 对于单元测试而言&#xff0c;测试粒度较细&#xff0c;需要测试内部状态的变更与相应函数是否成功被调用。 - 对于集成测试而言&a…

大数据-266 实时数仓 - Canal 对接 Kafka 客户端测试

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; Java篇开始了&#xff01; MyBatis 更新完毕目前开始更新 Spring&#xff0c;一起深入浅出&#xff01; 目前已经更新到了&#xff1a; H…

STM32G070CB的USART1_RX引脚

简介 在使用STM32G070CBT6 的 USART1时&#xff0c;发现把 PA10作为 USART1_RX引脚时&#xff0c;接收不到数据。 问题排查 更换pin脚 使用PB6/PB7作为USART1_TX/RX&#xff0c; USART1 工作正常。 使用PA9/PB7作为USART1_TX/RX&#xff0c; USART1 同样工作正常。 示波器…

tensorflow 内存错误

使用tensorflow训练多个模型时&#xff0c;训练过程中容易出现内存错误&#xff0c;在这里记录一下解决办法。希望能帮到各位。 2025-01-02 22:31:03.489713: W tensorflow/core/common_runtime/bfc_allocator.cc:275] Allocator (GPU_0_bfc) ran out of memory trying to all…