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

本文介绍了一种可变数组的实现方法,包括数组的创建、元素的添加、删除、替换、插入等功能,并提供了完整的Java代码示例。通过本文,读者可以了解如何在Java中手动实现一个具备基本功能的可变数组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数组是一种典型的顺序存储结构,用一段地址连续的存储单元依次存储线性表的数据元素。
在这里插入图片描述
扩展:自己动手实现可变数组

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();
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值