ArrayList操作

ArrayList中的添加元素、获取指定元素值、设置指定元素值和获取变长数组的长度

ArrayList是基于数组实现的。
ArrayList里有一个属性,这个属性就是一个数组。这个属性会记录我们放了多少数据,这样我们再向其中放置数据时,就会知道该向这个数组的哪个位置放数据了,但是这个数组也会有长度限制,当超过这个限制时,其内部就会创建一个具有更长的长度的数组,然后把旧数组的数据复制到新的数组里边,这样就可以继续往里边放数据了。
而我们在外部是感觉不到这个ArrayList是有长度限制的,它在内部处理好了。通过下图可以理解这个过程。
在这里插入图片描述
下边通过具体的程序进行验证。

package abcabc;
import java.util.Arrays;
public class ArrayList {
private static final int INITIAL_SIZE=10;
private int size=0;
private int[] array;
public ArrayList() {
 array=new int[INITIAL_SIZE];
}
public ArrayList(int initial) {
 if(initial<=0) {
  initial=INITIAL_SIZE;
 }
 array=new int[initial];
}
/**
 * 添加元素
 * @param num
 */
public void add(int num) {
 if(size==array.length) {
  array=Arrays.copyOf(array,size*2);
 }
 array[size++]=num;
}
/**
 * 获取指定位置的元素值
 * @param i
 * @return
 */
public int get(int i) {
 if(i>=size) {
  throw new IndexOutOfBoundsException("获取元素位置超过了最大长度");
 }
 return array[i];
}
/**
 * 设置指定位置的元素值
 * @param i
 * @param num
 * @return
 */
public int set(int i,int num) {
 int oldNum=get(i);
 array[i]=num;
 return oldNum;
}
/**
 * 获取变更数组的长度
 * @return
 */
public int size() {
 return size;
}
}

下边为具体的测试程序

package abcabc;
public class ArrayListTest {
public static void main(String[] args) {
 ArrayList arrayList=new ArrayList(1);
 arrayList.add(1);
 arrayList.add(2);
 arrayList.add(3);
 arrayList.add(4);
 arrayList.add(5);
 //获取数组下标为3的值,实际上也就是第4个位置的值,打印出来为4
 System.out.println(arrayList.get(3));
 arrayList.set(3, 9);
 System.out.println(arrayList.get(3));
 //变长数组的长度为5,实际上内部数组长度为8,在add(2)和add(5)时,分别进行了数组长度翻倍和数组复制
 System.out.println(arrayList.size());
}
}

下边是具体的程序运行结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值