这一章节我们再次深入的对照数组与容器。
数组与容器主要集中在三个方面:效率、类型、基础类型。
我们能够从三方面做出对照。
1.效率
这里的下来是指add和get 的速度
以下以add为例:
package com.ray.ch13; import java.util.ArrayList; public class Test { public static void main(String[] args) { Integer zero = new Integer(0); ArrayList<Integer> list = new ArrayList<Integer>(); long startTime = System.currentTimeMillis(); for (int i = 0; i < 1000000; i++) { list.add(zero); } long endTime = System.currentTimeMillis(); System.out.println(endTime - startTime); Integer[] integers = new Integer[1000000]; startTime = System.currentTimeMillis(); for (int i = 0; i < 1000000; i++) { integers[i] = zero; } endTime = System.currentTimeMillis(); System.out.println(endTime - startTime); System.out.println("----------------"); Integer[] integers2 = new Integer[1000000]; startTime = System.currentTimeMillis(); for (int i = 0; i < 1000000; i++) { integers2[i] = zero; } endTime = System.currentTimeMillis(); System.out.println(endTime - startTime); ArrayList<Integer> list2 = new ArrayList<Integer>(); startTime = System.currentTimeMillis(); for (int i = 0; i < 1000000; i++) { list2.add(zero); } endTime = System.currentTimeMillis(); System.out.println(endTime - startTime); } }输出:
26
2
----------------
2
29
从结果能够看见,明显是数组的快非常多,可是有一点须要注意的是,我们上面的代码要排除两点,一是放入的对象要先建立好。二是容器或者数组也要先建立好,单纯的对照add的速度,不然会有偏差。笔者在这里饶了20几分钟才绕出来。才得到最后想要的结果。
效率是数组胜出,可是数组牺牲了扩容的能力。容器尽管败了,可是它得到的是扩容的能力,就是由于须要这个扩容能力,才牺牲了效率。
可是,对于普通的应用。仅仅有几十个或者几百个对象的操作,推荐容器,由于这里面的效率损失全然能够忽略不计。
2.类型
在前面我们已经举过相关的样例,数组是类型安全的,容器有可能类型不安全。
样例:
package com.ray.ch13; import java.util.ArrayList; public class Test { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add(1); list.add("1"); Integer[] integers = new Integer[10]; integers[0] = 0; // integers[1]="1";//error } }
3.基础类型
数组支持基础类型,而容器不支持。
样例:
package com.ray.ch13; public class Test { public static void main(String[] args) { // ArrayList<int> list = new ArrayList();//error int[] arr = new int[10]; } }
4.总的来说
笔者还是推荐使用容器。由于java的容器已经具备数组的全部操作,并且还做出了扩展。这个对于编程来说非常重要,减少了编程的复杂程度。
当然,假设是上面的实验性的东西。另当别论。
总结:我们上面从三方面对照了数组和容器。以及举例说明。
这一章节就到这里,谢谢。
-----------------------------------