Java数据结构 - 面向对象的数组(基于基本类型数组的操作)
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 }