1. 程式人生 > >從頭認識java-14.1 再次對照數組與容器

從頭認識java-14.1 再次對照數組與容器

data lan con pre 總結 article void 裏的 list()

這一章節我們再次深入的對照數組與容器。

數組與容器主要集中在三個方面:效率、類型、基礎類型。

我們能夠從三方面做出對照。

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 再次對照數組與容器