数组是一种典型的顺序存储结构,用一段地址连续的存储单元依次存储线性表的数据元素。

扩展:自己动手实现可变数组

import java.util.Arrays;public class MyArray {//用于存储数据的数组private int[] elements;//构造方法public  MyArray() {elements= new int[0];} //获取数组长度的方法public int size() {return elements.length;}//往数组里添加一个元素public void addElement(int dst) {int []newArr= new int[elements.length+1];for (int i = 0; i < elements.length; i++) {newArr[i]=elements[i];}newArr[elements.length]=dst;elements=newArr;}//打印元素public void show() {System.out.println(Arrays.toString(elements));}//删除元素public void delElement(int index) {if(index<0||index>elements.length)throw new RuntimeException("下标越界");int[] newArr=new int[elements.length-1];for (int i = 0; i <newArr.length; i++) {if(i<index)newArr[i]=elements[i];else newArr[i]=elements[i+1];}elements=newArr;}//获取某个元素public int getElement(int index) {if(index<0||index>elements.length)throw new RuntimeException("下标越界");return elements[index];}//插入元素public void insertElement(int dst,int index) {int[]newArr=new int[elements.length+1];for (int i = 0; i < elements.length; i++) {if(i<index)newArr[i]=elements[i];else newArr[i+1]=elements[i];}newArr[index]=dst;elements=newArr;}//替换元素public void setElement(int index,int dst) {if(index<0||index>elements.length)throw new RuntimeException("下标越界");elements[index]=dst;}
}

简单说下插入和删除功能的实现:

     //插入元素public void insertElement(int dst,int index) {//定义一个长度加一的新数组int[]newArr=new int[elements.length+1];//遍历赋值for (int i = 0; i < elements.length; i++) {//遍历数组,如果在插入元素的索引之前则将原数组的元素赋值给新数组if(i<index)newArr[i]=elements[i];//否则将插入元素的索引后的元素赋值给新数组else newArr[i+1]=elements[i];}//插入元素newArr[index]=dst;//将新数组赋值给原数组实现数组的改变elements=newArr;}
//删除元素public void delElement(int index) {//对不符合要求的删除指令主动抛异常if(index<0||index>elements.length)throw new RuntimeException("下标越界");//新建一个长度减一的数组int[] newArr=new int[elements.length-1];//遍历赋值for (int i = 0; i <newArr.length; i++) {//遍历数组,如果在插入元素的索引之前则将原数组的元素赋值给新数组if(i<index)newArr[i]=elements[i];//否则将插入元素的索引后的元素赋值给新数组else newArr[i]=elements[i+1];}//将新数组赋值给原数组实现数组的改变elements=newArr;}
//新建类操作数组
public class testMyArr {public static void main(String[] args) {//创建一个可变的数组MyArray ma = new MyArray();//获得长度System.out.println(ma.size());//添加元素ma.addElement(6666);ma.addElement(9999);ma.addElement(23);ma.addElement(32);//显示元素ma.show();//删除指定元素//ma.delElement(1);//ma.show();//打印指定元素System.out.println(ma.getElement(1));//在指定位置插入元素ma.insertElement(987, 2);ma.show();//在指定位置修改元素ma.setElement(2, 985);ma.show();}}

从零单刷数据结构(Java描述)(三)——数组相关推荐

  1. 【零基础学Java】—对象数组(十三)

    [零基础学Java]-对象数组(十三) /*** @author :CaiCai* @date : 2022/4/7 11:08*/ public class demo05 {public stati ...

  2. Java好学吗?零基础入门Java,三个就业方向实现月入过万!

    Java好学吗?零基础入门Java容易吗?据统计,这是很多人学习前最常问也是最关心的问题之一. 不可否认,大家在开始接受新事物的时候都会陷入困境,但学习是循序渐进的,零基础入门Java到底难不难,只有 ...

  3. 从零单刷数据结构(Java描述)(二)——算法概论

    算法:算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作. 算法的特性: 输入输出:算法具有零个或多个输入,至少有一个或多个输出,即算法是一定需要输出的 ...

  4. 从零单刷数据结构(Java描述)(一)——数据结构概论

    数据结构:相互之间存在一种或多种特定关系的数据元素的集合.通常分类是逻辑结构和物理结构. 逻辑结构与物理结构: 逻辑结构:数据对象中数据元素之间的相互关系. 分类: 1)集合结构:数据同属一个集合,彼 ...

  5. 从零单刷数据结构(Java描述)——哈希表

    散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应的一个存储位置f(key).这种对应关系f称为散列函数,又称为哈希(Hash)函数. 采用散列技术将记录存储 ...

  6. JAVA描述算法和数据结构(01):稀疏数组和二维数组转换

    一.基本简介 1.基础概念 在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵:与之相反,若非0元素数目占大多数时,则称该矩阵为稠密矩阵.定义非零元 ...

  7. java 二维数据结构_JAVA描述算法和数据结构(01):稀疏数组和二维数组转换

    一.基本简介 1.基础概念 在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵:与之相反,若非0元素数目占大多数时,则称该矩阵为稠密矩阵.定义非零元 ...

  8. Java中的数组数据结构需要了解的要点

    首先,数组是Java中的对象.它们不是像int.short或long这样的基本类,也不是具有很多方法的全功能对象,但由于它们是对象,所以它们隐式地扩展了Object,这就是为什么可以使用数组引用(例如 ...

  9. 用Java描述数据结构之线性表的链式存储(链表),模拟LinkedList实现

    上一篇介绍了顺序表:用Java描述数据结构之线性表的顺序存储(顺序表),ArrayList及其方法的介绍 上一篇博客中说明了什么是线性表--线性表就是一个个数据元素逻辑上以一对一的相邻关系(但是在物理 ...

最新文章

  1. Windows 7+Code::Blocks+wxWidgets实录(一)
  2. 虚拟与现实的距离——VR产业链史上最全梳理收藏版本【上篇】
  3. 将dos格式文件转换为unix格式
  4. 程序员,Mybatis 你踩过坑吗?
  5. HD_I Hate It
  6. 第三十三讲:tapestry表单组件详解之Label
  7. 从基础概念到数学公式,这是一份520页的机器学习笔记(图文并茂)
  8. 《信息安全系统设计基础》 实验五
  9. Java 图形用户界面-表格组件
  10. AHK 中的字符串拼接和遍历操作
  11. vscode中vue代码高亮_Vue中添加友盟代码统计
  12. 8086的总线操作顺序
  13. HDOJ--1203--I NEED A OFFER!
  14. 40.广搜练习:洪水
  15. MSYS2 安装和配置
  16. 电机矢量控制(霍尔位置传感器)
  17. 50漂亮的后台管理界面模板
  18. Codeforces Round #572(div2)部分题解(A~C,E)
  19. 2022年茶艺师(初级)考试模拟100题及答案
  20. 结合 Whisper + Stable-diffusion 的语音生成图像任务

热门文章

  1. 中国联通引入3G版Iphone
  2. JavaSE基础-概述
  3. OpenCV实践之路——Qt中用opencv提取和匹配SIFT特征点
  4. Quartz_2.2.X学习系列十:Tutorials - Lesson 10: Configuration, Resource Usage and SchedulerFactory
  5. 模拟简易二维码的形成
  6. 如何让自己成功地进入高级圈子
  7. vscode 快速生成html
  8. 经过八年研发,多美小壹推出六种医患服务机器人
  9. 拒绝“狗牙”:六种抗锯齿性能大检测
  10. 当程序猿修真,这个世界会怎样!