1 import java.util.Arrays;
2
3 class MyArray {
4 public MyArray() {
5 elements = new int[0];
6 }
7
8 // 获取数组长度的方法
9 public int size() {
10 return elements.length;
11 }
12
13 // 往数组的末尾添加一个元素
14 public void add(int element) {
15 // 创建一个新的数组
16 int[] newArr = new int[elements.length+1];
17 // 把原数组中的元素复制到新数组中
18 for (int i = 0; i < elements.length; i++) {
19 newArr[i] = elements[i];
20 }
21 // 把要添加的元素放入新数组中
22 newArr[elements.length] = element;
23 // 使用新数组替换旧数组
24 elements = newArr;
25 }
26
27 // 打印所有元素到控制台
28 public void show() {
29 System.out.println(Arrays.toString(elements));
30 }
31
32 // 删除数组中的元素
33 public void delete(int index) {
34 // 判断下标是否越界
35 if (index < 0 || index >= elements.length) {
36 throw new RuntimeException("下标越界");
37 }
38 // 创建一个新的数组,长度为原数组的长度-1
39 int[] newArr = new int[elements.length-1];
40 // 复制原有数据到新数组;
41 for (int i = 0; i < newArr.length; i++) {
42 // 想要删除的元素前面的元素
43 if (i < index) {
44 newArr[i] = elements[i];
45 // 想要删除的元素后面的元素
46 } else {
47 newArr[i] = elements[i+1];
48 }
49 // 新数组替换旧数组
50 elements = newArr;
51 }
52 }
53
54 //获取某个元素
55 public int get(int index) {
56 // 判断下标是否越界
57 if (index < 0 || index >= elements.length) {
58 throw new RuntimeException("下标越界");
59 }
60 return elements[index];
61 }
62
63 // 插入一个元素到某个位置
64 public void insert(int index, int element) {
65 // 创建一个新的数组
66 int[] newArr = new int[elements.length+1];
67 // 将原数组中的元素放入新数组中
68 for (int i = 0; i < elements.length; i++) {
69 // 目标位置之前的元素
70 if (i < index) {
71 newArr[i] = elements[i];
72 // 目标位置之后的元素
73 } else {
74 newArr[i+1] = elements[i];
75 }
76 }
77 // 插入新的元素
78 newArr[index] = element;
79 // 新数组替换旧数组
80 elements = newArr;
81 }
82
83 //替换指定位置的元素
84 public void set(int index, int element) {
85 // 判断下标是否越界
86 if (index < 0 || index >= elements.length) {
87 throw new RuntimeException("下标越界");
88 }
89 elements[index] = element;
90 }
91
92 // 用于存储数据的数组
93 private int[] elements;
94
95 }
96
97 public class Main {
98 public static void main(String[] args) {
99 // 创建一个可变的数组
100 MyArray ma = new MyArray();
101
102 // 获取长度
103 int size = ma.size();
104 System.out.println(size);
105
106 // 往可变数组中添加一个元素
107 ma.add(99);
108 ma.add(98);
109
110 // 显示可变数组中的所有元素到控制台
111 ma.show();
112
113 // 删除某个元素
114 ma.delete(0);
115
116 // 获取某个元素
117 System.out.println(ma.get(0));
118
119 ma.add(96);
120 // 插入一个新的元素到指定位置
121 ma.insert(1, 97);
122 ma.show();
123
124 // 替换指定位置的元素
125 ma.set(-1, 99);
126 ma.show();
127 }
128 }