浅谈ArrayList(一)

ArrayList是List接口的大小可变数组的实现。每个ArrayList实例都有一个容量,随着向ArrayList中增加元素,其容量也在不断增加。

ArrayList类中存在两个成员变量:

private transient Object[] data;//对象数组
private int size;//大小

构造方法ArrayList(),默认初始容量为10的空列表

   

public ArrayList(int initialCapacity){
  if(initialCapacity<0)
    throw new  IllegalArgumentException("初始化容量出错:"+initailCapacity);
 this.data=new Object[initialCapacity];//data为ArrayList的一个成员
 }
public ArrayList(){
 this(10);//代表上面的带参数构造函数
}


ArrayList创建实例通常都需要加上泛型,定义方式为:
ArrayList<Object> aList=new ArrayList<Object>();//aList存放的元素为Object类型
     使用add方法往aList中添加元素,在ArrayList中帮我们处理了添加方式,添加末尾处
aList.add(2);
aList.add("2");
其中的第一个2,和第二个添加的“2”都是Object类型,因此如果使用int或者String接收值会报错:

int a=aList.get(0);//编译报错:类型不匹配,不能从Object类型转化为int
String b=aList.get(1);//编译报错:类型不匹配,不能从Object类型转化为String
   纵然我们很清楚获取的应该是什么类型,但是编译器还是报错,因此我们必须强制类型转换
int a=(Integer)aList.get(0);
String b=(String)aList.get(1);//编译成功
上面我们用到了get方法,用来获取元素数据,在底层调用中先进行一次判定,判定是否索引越界,越界则进行异常抛出处理:

private void RangeCheck(int index){
 if(index>=size)
    throw new IndexOutOfBoundsException("索引"+index+"但是size为:"+size);
}
进行了上面索引的检查后,然后执行返回元素数据:

public E get(int index)
{
  RangeCheck(index);
  return (E)data[index];
}

      这里返回的是个E就是ArrayList<E>类中的E,也叫泛型,它的好处就是可以将实际的数据类型放置到创建对象的时候来确定,对代码的重用性起了很大的作用,ArrayList<Object>就是确定为Object对象。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盒曰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值