答:集合中存放的可都是对象的引用,实际内容都在堆上面或者方法区里面,但是基本数据类型是在栈上分配空间的,随时就被收回的。但是通过自动包装类就可以把基本类型转为对象类型,存放引用就解决了这个问题。
示例
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