浅谈ArrayList(一),浅谈ArrayList(
分享于 点击 2193 次 点评:71
浅谈ArrayList(一),浅谈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对象。
相关文章
- 暂无相关文章
用户点评