数据结构的插入与删除

初始化

java 复制代码
public class ArrayList {
	
	
	
	int size = 0;//记录有效数据的个数
	int capacity =10; //数组容量
	int[] arr = new int[capacity];
	 double factor = 1.5;//因数 1.5

打印数组(相当于toString)

java 复制代码
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;
	 }

尾插的第一步就是判断数组空间是否还有空闲;

而且String类型是不可变的,所以一旦满数组后,需要进行扩容

java 复制代码
 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++;
	 }

指定位置插入

java 复制代码
 //指定位置插入
	 public void insert(int value,int position) {
		 //判断位置是否合理
		 if(position>size||position<0) {
			 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++;
	 }

删除一个符合条件的数据

java 复制代码
//删除第一个符合条件的数据
	 
	 public boolean delFirst(int value) {
		 //查找元素
		 for(int j=0;j<size;j++) {
			 if(arr[j]==value) {
				 //删除,j后面的数据都要向前移动一位
				 for(int i=j+1;i<size;i++) {
					 arr[i-1]=arr[i]; 
				 }
				 size--;
				 return true;
			 }
		 }
		 return false;
	 }

删除所有符合条件的数据

java 复制代码
//从后往前删,可以删干净
	 public boolean delAll(int value) {
		 boolean hasDeleted = false;
		 for(int k=size-1;k>=0;k--) {
			 if(arr[k]==value) {
				 for(int m=k+1;m<size;m++) {
					 arr[m-1]=arr[m];
				 }
				 size--;
				 hasDeleted = true;
			 }
		 }
		 
		 return hasDeleted;
	 }
相关推荐
程序员黑豆7 小时前
Java 注释详解:单行、多行与文档注释的完整指南
java·前端·ai编程
江畔柳前堤8 小时前
大语言模型分布式训练:从并行策略到万卡工程的系统梳理
人工智能·分布式·深度学习·算法·目标检测·机器学习·语言模型
hey_sml8 小时前
JAVA每日一学---CompletableFuture中thenApply与thenCompose区别详解
java·开发语言
Doraemomo8 小时前
数据结构-环形链表
java·数据结构·链表
Forever Nore9 小时前
LeetCode 4 寻找两个正序数组的中位数 - 二分
算法·leetcode
萧瑟余晖9 小时前
Java深入解析篇十七之SpringCloud
java·开发语言
是未才10 小时前
从输入 URL 到页面返回:DNS、路由、TLS 与 HTTP 完整链路
java·后端·计算机网络
ttod_qzstudio10 小时前
Java 常用语法极简通关(五):类与对象——字段、方法、构造器、this 与 static
java·开发语言·python
罗西的思考11 小时前
【OpenClaw具身硬件】MiniClaw 阅读笔记---(1)基础
人工智能·算法·机器学习
蛋先生DX11 小时前
大模型参数存储格式揭秘:BF不是男朋友
深度学习·算法·llm