搜索
您的当前位置:首页正文

数组相关操作的java实现

来源:哗拓教育

定义数组的三种方式

😱长度都不可变

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.5
	int[] 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;
		
	}

因篇幅问题不能全部显示,请点此查看更多更全内容

Top