1. 集合的类型为什么不能指定为基本数据类型?如:List<int>
list = new ArrayList<int>
();
答:集合中存放的可都是对象的引用,实际内容都在堆上面或者方法区里面,但是基本数据类型是在栈上分配空间的,随时就被收回的。但是通过自动包装类就可以把基本类型转为对象类型,存放引用就解决了这个问题。
2. 集合中存放的内容比较多时,在初始化时应指定其大小。这是因为如果不指定大小,每次向集合中插入数据时,集合都去判断是否达到零界点,如果达到零界点,集合会自动扩大1.5倍
示例
public static void main(String[] args) {
long begin1 = System.currentTimeMillis();
List<String> list1 = new ArrayList<>();
for (int i = 0; i < 1000000; i++) {
list1.add("第" + i + 1 + "个元素");
}
long end1 = System.currentTimeMillis();
System.out.println("list1 time:" + (end1 - begin1));
long begin2 = System.currentTimeMillis();
List<String> list2 = new ArrayList<>(1000000);
for (int i = 0; i < 1000000; i++) {
list2.add("第" + i + 1 + "个元素");
}
long end2 = System.currentTimeMillis();
System.out.println("list2 time:" + (end2 - begin2));
}
结果
list1 time:113
list2 time:66