File tree Expand file tree Collapse file tree 1 file changed +8
-0
lines changed Expand file tree Collapse file tree 1 file changed +8
-0
lines changed Original file line number Diff line number Diff line change @@ -14,29 +14,34 @@ Collection 結構可持有各自獨立的物件,在 Java SE 中, Collection
14
14
15
15
java.util.ArrayList 類別實作了 java.util.List 介面,所以要先認識一下 List 介面,List 介面是 java.util.Collection 介面的子介面,而 Collection 介面則是 java.lang.Iterable 的子介面,Iterable 介面要求實作一個 iterator() 方法。
16
16
17
+ ``` java
17
18
package java.lang ;
18
19
import java.util.Iterator ;
19
20
public interface Iterable <T> {
20
21
Iterator<T > iterator ();
21
22
}
23
+ ```
22
24
23
25
從 J2SE 5.0 開始增加了泛型設計的新功能,所以像 Iterable、Collection 相關介面與其實作類別,都使用泛型的功能重新改寫了,因而您可以在原始碼或是 API 文件中看到增加了不少與泛型相關的功能或說明。
24
26
25
27
Iterable 介面要求實作它的類別傳回一個實作 java.util.Iterator 介面的物件,事實上您在 Java SE 的 API 中找不到任何實作 Iterator 的類別,因為 Iterator 會根據實際的容器資料結構來迭代元素,而容器的資料結構實作方式對外界是隱藏的,使用者不用知道這個結構,只需要知道 Iterator 的操作方法,就可以取出元素,Iterator 介面的定義如下:
26
28
29
+ ``` java
27
30
package java.util ;
28
31
public interface Iterator <E> {
29
32
boolean hasNext ();
30
33
E next ();
31
34
void remove ();
32
35
}
36
+ ```
33
37
34
38
> ** 良葛格的話匣子** Iterator 是「Iterator 模式」的一個實例,有關 Iterator 模式,請參考我網站上的文件:
35
39
>
36
40
> - http://openhome.cc/Gossip/DesignPattern/
37
41
38
42
Collection 介面繼承了 Iterator 介面,定義了加入元素、移除元素、元素長度等方法,
39
43
44
+ ``` java
40
45
package java.util ;
41
46
public interface Collection <E> extends Iterable<E > {
42
47
int size ();
@@ -54,9 +59,11 @@ Collection 介面繼承了 Iterator 介面,定義了加入元素、移除元
54
59
boolean equals (Object o );
55
60
int hashCode ();
56
61
}
62
+ ```
57
63
58
64
Collection 在移除元素及取得元素上的定義是比較通用,List 介面則又增加了根據索引取得物件的方法,這說明了 List 資料結構的特性,每個加入 List 中的元素是循序加入的,並可指定索引來存取元素(以下原始碼只是節錄部份)。
59
65
66
+ ``` java
60
67
package java.util ;
61
68
public interface List <E> extends Collection<E > {
62
69
....
@@ -70,6 +77,7 @@ Collection 在移除元素及取得元素上的定義是比較通用,List 介
70
77
List<E > subList (int fromIndex , int toIndex );
71
78
....
72
79
}
80
+ ```
73
81
74
82
List 資料結構的特性是,每個加入 List 中的元素是循序加入的,並可指定索引來存取元素,List 可以使用陣列(Array)或是鏈結串列(Linked List)來實作這個特性,前者在 Java SE 中的實作就是 java.util.ArrayList,後者就是 java.util.LinkedList,對於循序加入與存取,使用 ArrayList 的效率比較好,對於經常變動元素排列順序的需求,使用 LinkedList 會比較好。
75
83
You can’t perform that action at this time.
0 commit comments