动态数组---使用Java实现
2023-12-28 17:10:41
目录
一、数据结构(手写动态数组)
(1)创建动态数组类
我们需要的属性有
(1)静态数组作为容器
(2)size作为逻辑大小
(3)capacity作为容量
//动态数组类 public class DynamicArray { //逻辑大小,可以简单理解成也就是当前这个数组的长度 //size-1是数组中的最后一个元素 private int size=0; private int capacity=8;//容量大小 private int[] array={}; }
(2)添加元素
在指定索引添加元素,我的思路是这样的,假如是在规定范围内index索引出添加元素,那么index后面的元素要向后移动给他腾地方,之后index换成指定值即可。
//向最后面添加元素 public void addLast(int element){ array[size]=element; size++; } //向指定位置添加元素 public void add(int index,int element){ if(index>=0&&index<=size-1){ //插入的位置是在数组内 //将第一个参数的array数组从index索引开始移动到(复制)到第三个参数的array数组从索引index+1开始,移动的数量是size-index System.arraycopy(array,index,array,index+1,size-index); } //不符合条件的也就是>=size的,下面逻辑也可以走,索引<0暂时不考虑 array[index]=element; size++; }
(3)删除元素
删除指定索引处的元素,思路如下:
假如删除index索引处的元素,那么index就后面的元素向前移动一格就行,将index索引处的元素给覆盖就行。
//删除指定索引的值,返回被删除的值 public int remove(int index){ int removed=array[index];//被删除的值 if(index<size-1){ System.arraycopy(array,index+1,array,index,size-index-1); } //如果删除的索引是最后一个,直接逻辑大小减一就行 size--; return removed; }
(4)扩容
//删除指定索引的值,返回被删除的值 public int remove(int index){ int removed=array[index];//被删除的值 if(index<size-1){ System.arraycopy(array,index+1,array,index,size-index-1); } //如果删除的索引是最后一个,直接逻辑大小减一就行 size--; return removed; }
二、ArrayList(Java原生包动态数组)
关于这个ArrayList的用法,我之前写过了,大家可以看看:ArratList的基本用法
文章来源:https://blog.csdn.net/gaoqiandr/article/details/135232820
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!