package 数据结构与算法;
import java.util.Arrays;
public class 面向对象的数组 {
//用于存储数据的数组
private int[] elements;
public 面向对象的数组(){
elements = new int[0];
}
//获取数组长度的方法
public int size() {
return elements.length;
}
//往数组的末尾添加一个元素
public void add(int element) {
int [] newArr = new int[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("下标越界");
}
//创建一个新的数组,长度为原数组的长度-1
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 get(int index) {
if(index>elements.length-1 || index<0) {
throw new RuntimeException("下标越界");
}
return elements[index];
}
//插入一个元素到指定位置
public void insert(int index,int element) {
//创建一个比原数组大的数组
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] = element;
//新数组替换旧数组
elements = newArr;
}
//替换指定位置的元素
public void set(int index,int element) {
if(index>elements.length-1 || index<0) {
throw new RuntimeException("下标越界");
}
elements[index] = element;
}
}
测试类
package 数据结构与算法;
public class 面向对象数组的测试类 {
public static void main(String[] args) {
面向对象的数组 ma = new 面向对象的数组();
System.out.println(ma.size());
//往可变数组中添加一个元素
ma.add(11);
ma.add(22);
ma.add(33);
ma.add(44);
ma.add(55);
ma.add(66);
ma.add(77);
ma.add(88);
System.out.println(ma.size());
ma.show();
//删除某个元素
// ma.delete(2);
// ma.show();
//取出数组中指定位置的元素
//System.out.println(ma.get(0));
//插入一个元素到指定位置
ma.insert(1, 10);
ma.insert(0, 0);
ma.insert(8, 1010);
ma.show();
//替换数组中的元素
ma.set(1,88);
ma.show();
}
}