JAVA泛型数组ArrayList详解

泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用。例如,我们并不希望为聚集String和File对象分别设计不同的类。下面来解释一下泛型数组ArrayList(泛型数组来解释一下这个原理):

java没有增加泛型类之前:

在java增加泛型类之前,泛型设计是通过继承实现的。ArrayList类只维护一个Object引用的数组:

public class ArrayList{
    private Object[] elementData;
    ...
    public Object get(int i ){...}
    public void add(Object o){...}
}

那么问题来了,ArrayList的get和set方法必须进行类型转换,例如:

ArrayList arr = new ArrayList();
String name = (String)arr.get(0);

而且可能出现错误:

arr.add(new File("..."))

上述代码编译和运行都不会报错,然而如果我们把它get取出来之后强制转化为String类型,就会产生一个运行时出错误。

增加泛型类之后: 

声明数组:

ArrayList<Integer> arr = new ArrayList<>();

这样他维护的实力类型就确定了,都是Integer类型。

ArrayList的一大优点是,他的大小可变,当他的存储空间不能在存储新的数据时,他会自动创建一个新的更大的数组,把当前数组的值拷贝过去,原来的比较小的空间就等待GC回收空间了。 

ArrayList的一些方法:

ArrayList<E>()  //都遭一个空数组列表
ArrayList<E>(int initialCapacity)    //指定数组长度
void ensureCapacity(int capacity)    //查看是够有足够的空间
void trimToSize()     //将数组列表的存储容量消减到当前尺寸

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值