JAVA——动态数组的增删改查

本文介绍了如何在Java中通过自定义类实现动态数组,包括数组长度的动态调整、元素的增删改查操作,以及构造方法的使用。
摘要由CSDN通过智能技术生成

一、动态数组

动态数组就是在数组的基础上增加了一个可以根据元素的个数动态调整数组大小的功能(用类实现)
         我们之前用的数组最大的问题就在于数组长度定长,一旦一个数组在定义时确定长度之后,使用过程中无法改变长度。

        Java 中提供的数组都是静态数组 int[] 、char []、long []…(定义之后无法改变长度),需要我们自己定义一个类,拓展基础数组的功能。此时、对外部来说,他已经不是一个数组了,而是一个类,创建这个“变长数组”相当于创建对象。

思想:
        先创建一个类MyArray、在这个类中,定义一个private修饰的整型全局数组 private int [] data(private是为了让外界不可见)、再定义一个私有的整型全局变量private int size(表示这个私有数组已经存有数据的长度、另外、因为是全局变量、size有初始值 0 )。

为什么:size 表示私有数组已经存有数据的长度?
      因为当我们存储时、data.length 不一定会存满、而是通过我们自己定义的一个变量,size来表示我们下一个期待存入数据的位置。size-1 索引代表的是最后一个元素。
所以、size 的值 即代表 数组的有效长度。

       接着当我们创建这个类的一个对象时候、肯定要给动态数组分配一个初始空间吧、所以我们要定义一个有参的构造方法public MyArray( int num )、传入一个整型变量 num ,传入的参数作为初始的数组的长度。即this.data = new int [num];。当然,也可以再定义一个无参的构造方法public MyArray()、让这个无参的方法去调用这个有参的方法、只需要在调用时传入一个固定值即可、因为是无参调用有参、即this( 10 );、(这代表当我们使用无参构造方法创建一个MyArray类的对象时,默认开辟的整型数组大小为 10)。

二、增加

①add(int  val)——》 在当前数组末尾添加元素

②addIndex(int index , int val )——》向当前动态数组中索引为index位置插入一个新元素

扩容:Arrays.copyOf(oldArr , newArrlen );可以把旧数组的所有内容搬到新数组,新数组的长度为规定长度。

三、删除     

 ① public  int  remove (int  index); 删除索引对应的元素,返回删除前的元素值

②  public  int removeFirst ();   删除数组的头元素

③  public  int removeLast ();   删除数组的尾元素         

④  public  boolean   removeByvalueOnce (int  val );   删除数中第一个值为val的元素,返回是否删除成功                                                                                                                                                                           

四、查找       

① public   int   getByValue (int  index);  查询当前数组中第一个值为val的元素索引

②public  boolean  contains ( int  val );   查询动态数组中是否包含值为val的元素,返回布尔值

③public  int  get (int index );  查询当前动态数组中索引为index的元素值

 五、修改

 ①public int  set (int  index  ,int  newVal  );修改index位置元素为新的值newVal,返回修改前的值

②public boolean set (int oldVal , int newVal); 修改第一个值位oldVal的元素,更改为新的值newVal,返回是否修改成功。

  • 35
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值