java数据结构之面向对象的数组简易集合的实现,对数组进行增add删delete改set查get
程序员文章站
2022-03-01 23:20:21
...
面向对象的数组
因为数组的创建是固定长度的对指定位置的增和删操作起来会比较复杂
java数组的创建是创建时需要指定数组的长度的 所以在新增和删除我们需要创建一个新的数组
数组类型 Object 可以存入任意对象数据
增
1.直接往数组最后中添加一个元素
public void add(Object element){
//创建一个新数组长度在原有数组上加1
Object[] newArr = new Object[elements.length + 1];
//将以前数组全部复制到新数组
for (int i = 0;i<elements.length;i++){
newArr[i] = elements[i];
}
//新数组最后一位赋值为新增元素
newArr[elements.length] = element;
elements = newArr;
}
2.新增插入一个元素到指定位置
public void insert(int index,Object element){
Object[] newArr = new Object[elements.length +1];
for (int i = 0;i<elements.length;i++){
//将index 之前的元素直接复制到新数组
if(i<index){
newArr[i] = elements[i];
//index之后的新数组下标需要加1
}else {
newArr[i + 1] = elements[i];
}
}
newArr[index] = element;
elements = newArr;
}
删
删除数组中的指定索引元素
public void delete(int index){
//判断数组是否越界
if(index < 0 || index > elements.length - 1){
throw new RuntimeException("数组越界");
}
Object[] newArr = new Object[elements.length-1];
for (int i = 0;i<newArr.length;i++){
//将index 之前的元素直接复制到新数组
if(i<index){
newArr[i] = elements[i];
//index之后的原数组下标需要加1
}else{
newArr[i] = elements[i+1];
}
}
//将新数组赋值给原数组
elements = newArr;
}
修改和查找和正常操作一致
完整代码和测试对象的数组代码
MyArray.java内容
package com.demo.array;
import java.util.Arrays;
public class MyArray {
//用于存储数据的数组
private Object[] elements;
public MyArray(){
//初始化设置数组的长度 这里设置为0
elements = new Object[0];
}
//获取数组长度的方法
public int size(){
return elements.length;
}
//往数组中添加一个元素
public void add(Object element){
//创建一个新数组长度在原有数组上加1
Object[] newArr = new Object[elements.length + 1];
//将以前数组全部复制到新数组
for (int i = 0;i<elements.length;i++){
newArr[i] = elements[i];
}
//新数组最后一位赋值为新增元素
newArr[elements.length] = element;
elements = newArr;
}
//打印显示数组的信息
public void show(){
//快速打印数组
System.out.println(Arrays.toString(elements));
}
//删除数组中的元素
public void delete(int index){
//判断数组是否越界
if(index < 0 || index > elements.length - 1){
throw new RuntimeException("数组越界");
}
Object[] newArr = new Object[elements.length-1];
for (int i = 0;i<newArr.length;i++){
//将index 之前的元素直接复制到新数组
if(i<index){
newArr[i] = elements[i];
//index之后的原数组下标需要加1
}else{
newArr[i] = elements[i+1];
}
}
//将新数组赋值给原数组
elements = newArr;
}
//获取某个下标的数组
public Object get(int index){
return elements[index];
}
//插入一个元素到指定位置
public void insert(int index,Object element){
Object[] newArr = new Object[elements.length +1];
for (int i = 0;i<elements.length;i++){
//将index 之前的元素直接复制到新数组
if(i<index){
newArr[i] = elements[i];
//index之后的新数组下标需要加1
}else {
newArr[i + 1] = elements[i];
}
}
newArr[index] = element;
elements = newArr;
}
//设置值
public void set(int index,Object element){
//判断数组是否越界
if(index < 0 || index > elements.length - 1){
throw new RuntimeException("数组越界");
}
elements[index] = element;
}
}
测试类
TestMyArray.java内容
package com.demo.array;
public class TestMyArray {
public static void main(String[] args) {
MyArray myArray = new MyArray();
System.out.println(myArray.size());
myArray.add(5);
System.out.println(myArray.size());
myArray.add(6);
myArray.add(7);
myArray.add(8);
myArray.show();
myArray.delete(0);
myArray.show();
myArray.insert(2,9);
myArray.show();
}
}