对象数组的增删改查

版权声明:071623 https://blog.csdn.net/weixin_43584220/article/details/88381282

对象数组

数据结构
现在就开始记录我学习的数据结构与算法


public class TestArraysOP01 {
//	public static void main(String[] args) {
//		
//	}
//这里的main方法不用写,这是另一个包(package cn.DataStructureAndAlgorithm01)里的一个class(TestArraysOP01)
//这个class的作用——————————等等记得写
	
//封装一下  私有属性不会给外部类调用
	private int[] elements;
	
	public TestArraysOP01() {
		elements = new int[0];
	}
//这样封装使得每次调用这个class的时候它都会自动new一个对象数组
//所以在构造方法中new这个对象数组  

//下面都是这个类的方法,所以意味着每次创建这个类的对象时,这些对象都有这些方法
//求数组的长度
	public int size() {
		return elements.length;
	}

//在这个数组最后加入一个数据
	public void add(int s) {
		int[] b = new int[elements.length + 1];
		for(int i = 0; i < elements.length; i++) {
			b[i] = elements[i];
		}
		b[elements.length] = s;
		elements = b;
	}

//删除一个指定下标的数据
	public void delete(int index) {
		//判断下标是否越界
		if(index < 0 || index > elements.length - 1) {
			throw new RuntimeException("下标越界");
		}
		int[] b = new int[elements.length - 1];
		for(int i = 0; i < elements.length - 1; i++) {
			if(i < index) {
				b[i] = elements[i];
			}
			else {
//i到了index  跳过这个下标进行赋值
				b[i] = elements[i + 1];
			}
		}
		elements = b;
	}
	
//这里的elements是另一个颜色(与其他的方法不同)    好好想想
//从这里就可以看出c语言需要在()内加入参数,以确定主人需要show的是哪个数组
//而java在调用这个方法的时候就明确是a.show();   show的是a对象的数组
	public void show(/*int[] elements*/) {
		System.out.println();
		for(int i = 0; i < elements.length; i++) {
			System.out.print( elements[i] + " ");
		}
	}
	
//在指定下标插入指定的数据
//这里稍微改了一下返回类型为int[]
	public int[] insert(int s, int index) {
		int[] b = new int[elements.length + 1];
		for(int i = 0; i < elements.length; i++) {
			if(i < index) {
				b[i] = elements[i];
			}
			else {
//在i=index这个位置跳过对b数组的赋值
				b[i + 1] = elements[i];
			}
		}
//最后将跳过的位置进行赋值指定的值(index)
		b[index] = s;
		return b;
	}

//得到指定下标的值
	public void get(int index) {
		//判断下标是否越界
		if(index < 0 || index > elements.length - 1) {
			throw new RuntimeException("下标越界");
		}
		System.out.println("\n" + elements[index]);
	}
	
//修改指定下标的值
	public void set(int index, int s) {
		//判断下标是否越界
		if(index < 0 || index > elements.length - 1) {
			throw new RuntimeException("下标越界");
		}
		elements[index] = s;
	}
}

//导入自己写的类
import cn.DataStructureAndAlgorithm01.Ravanla.TestArraysOP01;

public class TestArraysOP {
	public static void main(String[] args) {
		TestArraysOP01 a = new TestArraysOP01();
//		好好想想,a是对象,在a对象里创建了一个新的数组elements(对象)   所以下面写的a.add方法错了
		int size = a.size();
		System.out.println(size);
//		a.add(a, 23);
		a.add(99);
		a.add(98);
		a.show();
		a.add(97);
		a.add(96);
		a.add(95);
		a.show();
		a.delete(3);
		a.show();
		a.insert(96, 3);
		a.show();
		a.get(2);
		a.set(2, 33);
		a.show();
	}
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43584220/article/details/88381282