欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

浅谈ArrayList(一),浅谈ArrayList(

来源: javaer 分享于  点击 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对象。





相关文章

    暂无相关文章

用户点评