從頭認識java-14.1 再次對照數組與容器
阿新 • • 發佈:2017-07-22
data lan con pre 總結 article void 裏的 list()
輸出:
3.基礎類型
4.總的來說
這一章節我們再次深入的對照數組與容器。
數組與容器主要集中在三個方面:效率、類型、基礎類型。
我們能夠從三方面做出對照。
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的容器已經具備數組的全部操作,並且還做出了擴展。這個對於編程來說非常重要,減少了編程的復雜程度。
當然,假設是上面的實驗性的東西。另當別論。
總結:我們上面從三方面對照了數組和容器。以及舉例說明。
這一章節就到這裏,謝謝。
-----------------------------------
文件夾
從頭認識java-14.1 再次對照數組與容器