ArrayList问题

来源:百度知道 编辑:UC知道 时间:2024/06/04 18:45:43
List list = new ArrayList(5);
System.out.println("size====" + list.size());

为什么打印出来结果是0????

我来告诉你,
List list = new ArrayList(5);
这一句的意思并不是指定list的size为5,
事实上这时候size为0
size表示当前list中有多少个元素在存放。

那这个5又是什么意思呢?
这个参数是对list的性能进行控制用的! 它是list的当前容量
它表示向操作系统申请5个元素大小的空间。 可以向list中加入5个元素
当5个元素加满后,下次如果还要再加的时候list会自动,记得是自动哦,自动向操作系统再申请5个单位的内存空间。此时容量变成10可以存下10个单位元素

默认情况下,此值为1,表示每增加一个元素就申请一个空间,当前容量加一

假设List list = new ArrayList(3);
表示list向系统申请了3个单位的空间
list.add(obj1);
list.add(obj2);
list.add(obj3);
这时单位空间己满,如果再加的话list就会
再次自动申请3个单位,此时总容量就是6

所以参数是几,每次空间满了再次申请的时候就会以此为标准申请多少空间出来

为什么要这样做? 为什么不直接new ArrayList(10000)省得麻烦?
答:因为申请多了浪费空间,如果你只有10个元素,结果你申请了10000个,大大地浪费.

默认为1不行吗?
答:行,不会错,但如果你的list经常变动,而且变动有规律,而且经常会增加新元素进去。这样的话每次新增一个元素进去都会要向操作系统重新申请一个内存空间,这是很费时间的,为了提高速度,可以先申请好一些,用完了再申请

你没有向list中添加元素

List list = new ArrayList();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
lis