定义数组的三种方式
😱长度都不可变
int[] arr = {5,10,15};
int[] brr = new int[5];
int[] crr = new int[] {2,10,30};
数组扩容(动态数组)
ArrayList的实现:
public class ArrayList {//全局变量int size=0;//记录有效数据的个数int capacity=10;//记录当前数组的容量double factor=1.5;//因数1.5int[] arr = new int[capacity];//插入public void add(int element) {if(size==capacity) {//数组满了扩容capacity = (int)(capacity*factor);int[] brr = new int[capacity];for(int i=0;i<arr.length;i++) {brr[i] = arr[i];}arr = brr;}//插入数据arr[size] = element;size++;}//打印public String toString() {String res = "[";for(int i=0;i<size;i++) {if(i==size-1) {res+=arr[i];}else {res+=arr[i]+", ";}}res+="]";return res;}
}
指定位置插入数据
//指定位置插入public void insert(int value,int position) {//判断位置是否合理if(position<0||position>size) {System.out.println("插入位置不合理");return;}//数组满了扩容if(size==capacity) {capacity = (int)(capacity*factor);int[] brr = new int[capacity];for(int i=0;i<arr.length;i++) {brr[i] = arr[i];}arr = brr;}//数组有空间进行插入//插入位置及其之后的数据,从前往后的顺序统一向后移动一位for(int i=size-1;i>=position;i--) {arr[i+1] = arr[i];}//插入arr[position] = value;size++;}
有序数组的插入
//有序数组的插入public void insert1(int value) {int i;for (i = size-1;i>=0&&arr[i]>value;i--) { // 将大于 value 的元素向后移动一位 arr[i + 1] = arr[i]; } // 在找到的位置插入 value arr[i + 1] = value; // 更新数组的有效元素数量 size++; }
删除元素
//删除第一个符合条件的数据public boolean delFirst(int value) {for(int j=0;j<size;j++) {if(arr[j] == value) {//删除for(int i=j+1;i<size;i++) {arr[i-1] = arr[i];}size--;return true;}}return false;}//删除所有符合条件的数据public boolean delect(int value) {for(int j=size-1;j>=0;j--) {if(arr[j] == value) {//删除for(int i=j+1;i<size;i++) {arr[i-1] = arr[i];}size--;}if(j==0) {return true;}}return false;}