天天看点

各种数值集合的类型(Array、ArrayList、Hashtable、List<T>)

主要有:1、数组array    2、arraylist    3、hashtable    

4、泛型集合list<t>

1、array

数组的特点是存储的类型统一,长度固定。

在我们一开始声明数组的时候就得确定他的长度,堆内存就要分配相应大小的内存空间。所以比较静态,不灵活。

2、解决array的缺点,出现了arraylist类型

arraylist的长度是动态变化的,随着我们add的对象的增加,他的数量(count)逐一增加,他的容量(capacity)成倍(2的指数倍)的增加。同时他存储的对象类型是object类型,即对存储的类型没有任何限制。解决了array的两个不足。

可惜的是,此时出现了一个问题:当我们检查一个arraylist中是否包含某一个对象时,我们需要遍历整个arraylist。效率极其低下。so

sad。

3、解决arraylist的缺点,出现了hashtable

hashtable存储的对象同样是object类型,so方便。但是hashtable中的对象的索引(index)是我们自己定义的。例如我们在增加一个成员的时候是这样的hashtable.add(person.name,person)

所以,hashtable中的键值(即索引)不能是一样的。

 4、泛型集合list<t>

上面的arraylist存储的是object类型有带来一个麻烦,就是当我们取出来使用的时候必须强转一下才能继续使用,所以出现了list<t>。<t>输入类型,如int、string等等。t是什么类型就必须添加什么类型,这样当我们取出来的时候就不需要强转了。

list<int>的toarray()方法的结果是输出一个int[]的数组。