Java中有一些對象被稱為容器(container)。容器中可以包含多個對象,每個對象稱為容器中的一個元素。容器是用對象封裝的資料結構(data structure)。
充滿夢想的容器
不同的資料結構有不同的組織元素的方式,也可以有不同的操作。根據具體實施的不同,資料結構的操作效率也各有差別。Java中的容器也是這樣。我們要選擇適當的容器,以應對變化的需求。
(關於資料結構更多的內容,可參考紙上談兵: 演算法與資料結構)
數組
數組(array)是最常見的資料結構。數組是相同類型元素的有序集合,並有固定的大小(可容納固定數目的元素)。數組可以根據下標(index)來隨機存取(random access)元素。在記憶體中,數組通常是一段連續的儲存單元。
Java支援數組這一資料結構。我們需要說明每個數組的類型和大小。如下:
public class Test { public static void main(String[] args) { Human[] persons = new Human[2]; // array size 2 persons[0] = new Human(160); persons[1] = new Human(170); int[] a = {1, 2, 3, 7, 9}; // array size 5 System.out.println(a[2]); String[] names = {"Tom", "Jerry", "Luffy"}; // array size 3 System.out.println(names[0]); } }
在說明類型時,在類型說明(Human)後面增加一個[],來說明是一個數組。使用new建立容器時,需要說明數組的大小。
我們可以使用 數組名[下標] 的方式來調用某個元素。我們可以逐個的初始化數組的元素,也可以在聲明的同時使用{}初始化數組。
對於非基本類型的數組,比如Human[],數組中儲存的是對象的引用。
我們可以調用System.arraycopy()方法來有效複製數組:
public class Test { public static void main(String[] args) { int[] aFrom = {1, 2, 3, 7, 9}; // array size 5 int[] aTo = new int[3]; System.arraycopy(aFrom, 1, aTo, 0, 3); System.out.println(aTo[1]); } }
System.arraycopy()中,aFrom為想要複製出去的數組,aTo為想要複製到的數組,1為aFrom的想要複製出去的元素起始位置,0為aTo中想要儲存複製來元素的起始位置,3為所要複製的元素總數。
查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/Java/