2.4 面向对象的数组
图例演示:
代码演示:
MyArray.java
public class MyArray {
//创建一个数组
private int[] arr;
//构造方法
public MyArray(){
arr = new int[0];
}
//获取数组长度的方法
public int size(){
return arr.length;
}
//往数组的末尾添加数组
public void add(int element){
int[] newArr = new int[arr.length + 1];
for(int i = 0; i < arr.length; i++){
newArr[i] = arr[i];
}
newArr[arr.length] = element;
//使用新数组替换原数组
arr = newArr;
}
//打印所有元素
public void show(){
System.out.println(Arrays.toString(arr));
}
//删除数组中的元素
public void deleteForElement(int index){
if(index < 0 || index > arr.length - 1){ //判断下标是否越界
throw new RuntimeException("下标异常");
}
int[] newArr = new int[arr.length - 1];
for(int i = 0; i < newArr.length; i++){
if(i < index){
newArr[i] = arr[i];
}else {
newArr[i] = arr[i + 1];
}
}
arr = newArr;
}
//取出指定位置的元素
public int get(int index){
if(index < 0 || index > arr.length - 1){ //判断下标是否越界
throw new RuntimeException("下标异常");
}
return arr[index];
}
//插入一个元素到指定位置
public void insert(int index, int element){
//创建一个新数组
int[] newArr = new int[arr.length + 1];
//将原数组中的元素放入新数组中
for(int i = 0; i < arr.length; i++){
if(i < index){ //目标位置之前的元素
newArr[i] = arr[i];
}else{ //目标位置之后的元素
newArr[i + 1] = arr[i];
}
}
newArr[index] = element;
arr = newArr;
}
//替换指定位置的元素
public void set(int index, int element){
if(index < 0 || index > arr.length - 1){ //判断下标是否越界
throw new RuntimeException("下标异常");
}
arr[index] = element;
}
}
TestMyArray.java
public class TestMyArray {
public static void main(String[] args) {
MyArray myArray = new MyArray();
//获取长度
myArray.show();
//往可变数组中添加一个数组
myArray.add(99);
myArray.add(98);
myArray.show();
System.out.println(myArray.size());
myArray.deleteForElement(1);
myArray.show();
System.out.println(myArray.size());
int i = myArray.get(0);
System.out.println(i);
myArray.insert(1, 97);
myArray.show();
myArray.set(0, 69);
myArray.show();
}
}
结果: