版权声明: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();
}
}