当前位置: 首页 > news >正文

-- 数据结构 顺序表 --Java

顺序表:使用一段物理地址连续的储存单元依此储存元素,一般使用数组实现顺序表的增删查改

实现

顺序表其实就是将元素储存到一个数组中,并且这个数组会根据你的插入的数据的增加而自动进行数组的扩容

字段的设计

使用了多态是为了能储存各种类型的数据,继承的接口是把要写的方法卸载接口中然后再类中实现这样方便管理

default是默认的数组的大小,size是储存的元素数量,capacity是储存元素的数组

增 add

直接将要添加的元素加入size指向的位置就好,应为size指向的正好是第一个没有储存数据的空位置,插入后size++记录下插入的元素个数,在插入时可能会存在数组储存满

(size == capacity.length)了的情况,那么这时我们就需要对数组进行扩容,对于扩容具体要扩多大,这里使用的是1.5倍

删除 remove

要删除首先要找到要删除的这个元素,然后将这个元素后面的元素向前移动一步,覆盖掉要删除的这个元素,这时我的删除就写好了

为了找到这个元素,我们只需要遍历有效数据数量而不是整个数组

查 get

遍历整个有效数据,若存在就返回true,若不存在返回false

改 set

更改指定下表的值,要注意下表的合法性

这里如果不合法会抛出自定义的异常

增删查改over

接下来还可以写出自己需要的各种方法 指定位置的插入 清空顺序表等等

顺序表可以实现数据的随机查询,因为数据是连续的,只需要输入对应的下标就可以查询

对于顺序表的最大弊端就是会造成空间的浪费,比如他扩容了100个整形的位置但是可能在我存储到50个就没有数据的存储了,那么就造成50个空间的浪费,若要避免空间的浪费,那么就可以使用另一种数据结构链表

end 

相关文章:

  • TCP并发服务器多线程和多进程方式以及几种IO模型
  • 【Python】copy()浅拷贝与深拷贝
  • 【牛客_c++_string】HJ1字符串最后一个单词的长度
  • Spring Boot使用拦截器(Interceptor)
  • mysql中group by语句使用
  • 结果一。6.will,begoingto,betodo,beabouttodo结构的区别
  • 在CentOS 7上安装MongoDB的方法
  • ROS imu传感器节点
  • 书生大模型实战营-进阶关卡-6-MindSearch 快速部署
  • 力扣8.27
  • 阿里云对象存储服务(Aliyun OSS):企业级云存储解决方案
  • Spring Boot 集成 JdbcTemplate(盘它!)
  • 敏捷架构开发方法和实践:迎接数字化时代的挑战
  • 东芝玉兔2.0明日震撼开售,洗衣机界的全新革命
  • 本地化云桌面系统环境VMware horizon搭建
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • 07.Android之多媒体问题
  • Debian下无root权限使用Python访问Oracle
  • es6要点
  • spring学习第二天
  • Vue官网教程学习过程中值得记录的一些事情
  • Web设计流程优化:网页效果图设计新思路
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 产品三维模型在线预览
  • 大整数乘法-表格法
  • 类orAPI - 收藏集 - 掘金
  • 如何选择开源的机器学习框架?
  • 深度学习在携程攻略社区的应用
  • 十年未变!安全,谁之责?(下)
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 算法-图和图算法
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • 阿里云重庆大学大数据训练营落地分享
  • 数据库巡检项
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (02)Unity使用在线AI大模型(调用Python)
  • (C语言)二分查找 超详细
  • (floyd+补集) poj 3275
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (论文阅读30/100)Convolutional Pose Machines
  • (每日一问)基础知识:堆与栈的区别
  • (排序详解之 堆排序)
  • (十) 初识 Docker file
  • (一)Linux+Windows下安装ffmpeg
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • ***检测工具之RKHunter AIDE
  • .JPG图片,各种压缩率下的文件尺寸
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .net访问oracle数据库性能问题
  • .NET框架设计—常被忽视的C#设计技巧
  • :not(:first-child)和:not(:last-child)的用法