1 package test_6_4; 2 3 public class MyArray { 4 5 /** 6 * 封装一个动态数组类,可以根据用户传递的数据,动态的对数组的长度进行扩展; 7 * 方法有: 8 * 扩展数组 9 * 追加一个值 10 * 根据索引,获得元素的值 11 * 根据索引,删除一个值 12 * 根据索引,修改一个值 13 * 在指定位置插入一个值 14 * 获得动态数组中元素的个数 15 */ 16 17 public int[] array = new int[0]; 18 19 /** 20 * 扩展数组 21 */ 22 public void extend() { 23 24 int[] newArray = new int[array.length + 1]; 25 26 for (int i = 0; i < array.length; i++) { 27 newArray[i] = array[i]; 28 } 29 30 array = newArray; 31 } 32 33 /** 34 * 缩短数组 35 */ 36 public void cut() { 37 38 int[] newArray = new int[array.length - 1]; 39 40 for (int i = 0; i < array.length - 1; i++) { 41 newArray[i] = array[i]; 42 } 43 44 array = newArray; 45 46 } 47 48 /** 49 * 追加 50 * 51 * @param num 要追加的值 52 */ 53 public void add(int value) { 54 55 extend(); 56 57 array[array.length - 1] = value; 58 } 59 60 61 /** 62 * 获取 63 * 64 * @param 索引 65 * @return 获取值 66 */ 67 public int get(int index) { 68 69 int value = array[index]; 70 71 return value; 72 } 73 74 /** 75 * 删除 76 * 77 * @param 索引 78 */ 79 public void del(int index) { 80 81 for (int i = index; i < array.length - 1; i++) { 82 array[i] = array[i + 1]; 83 } 84 85 cut(); 86 } 87 88 /** 89 * 修改 90 * 91 * @param index 索引 92 * @param value 修改值 93 */ 94 public void set(int index, int value) { 95 96 array[index] = value; 97 98 } 99 100 /** 101 * 插入 102 * 103 * @param index 索引 104 * @param value 值 105 */ 106 public void insert(int index, int value) { 107 108 extend(); 109 110 for (int i = array.length - 1; i > index; i--) { 111 array[i] = array[i - 1]; 112 } 113 114 115 array[index] = value; 116 117 } 118 119 /** 120 * 获取长度 121 */ 122 public int getLength() { 123 124 return array.length; 125 } 126 127 /** 128 * 打印 129 */ 130 public void print() { 131 132 for (int i = 0; i < array.length; i++) { 133 System.out.print(array[i] + " "); 134 135 } 136 } 137 138 }
1 package test_6_4; 2 3 public class Test { 4 5 public static void main(String[] args) { 6 7 MyArray arr = new MyArray(); 8 9 arr.print(); 10 11 arr.add(1); 12 arr.add(2); 13 arr.add(3); 14 arr.print(); 15 System.out.println("数组长度为" + arr.getLength()); 16 17 System.out.println("---"); 18 19 arr.del(0); 20 arr.print(); 21 System.out.println("数组长度为" + arr.getLength()); 22 23 System.out.println("---"); 24 25 System.out.println("索引1处的值为" + arr.get(1)); 26 27 arr.insert(1, 99); 28 arr.print(); 29 System.out.println("数组长度为" + arr.getLength()); 30 31 System.out.println("---"); 32 33 } 34 35 }
结果如下:
1 2 3 数组长度为3
---
2 3 数组长度为2
---
索引1处的值为3
2 99 3 数组长度为3
---
数组长度为3