作者awert ( )
看板java
標題Re: [問題] Iterator語法問題
時間Mon Jun 6 10:48:24 2011
※ 引述《Nozaki (NA)》之銘言:
: 三個很基本的語法問題一直很困惑我...請大家解惑一下 感謝orz
: List set =new ArrayList();->為什麼不用ArrayList set=new ArrayList();就好?
兩種方法其實都是正確的,
只是說用不到一些比較特別method時,
比較不建議去把前面interface給寫死。
: set.add(new Integer(3));->為什麼不用set.add(3);就好?
new Integer(3)是Object
直接用3是Primitive
list是存取object的,用primitive type丟進去裡面
它也會自動轉成object後再存進去
因此其實是同一種意思
(感謝uziel指正)
: Iterator it =set iterator();->為什麼建立一個iterator的物件是這樣寫
: 而不是一般的 iterator it=new iterator();阿?
我想上面應該打錯了,是set.iterator()
你有動手試的話會發現Iterator是一個interface,不是物件。
所以當然不能單純地 new Iterator()就拿來用
要使用interface必需要用實作過的,
以上面舉的例子來講,
list set是一個 ArrayList
ArrayList也是繼承/實作一堆東西,其中有一項interface叫Collection
Collection又繼承Iterable
Iterable這個interface,
裡面定義了所有使用這個interface的人都要實作一個iterator出來
因此 Iterator it = set.iterator()
這個意思是指使用set這個list實作出來的iterator object
最後,
List就叫list就好,叫什麼set
害我寫set是一個ArrayList都覺得怪怪的 qq
--
We who cut mere stones must always be envisioning cathedrals.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.35.186.241
※ 編輯: awert 來自: 114.35.186.241 (06/06 10:49)
→ uziel:ArrayList 內部只能存物件,所以基本型別資料要先包成物件 06/06 11:11
→ awert:其實丟primitive進去它會自動轉成object型態 06/06 11:21
→ awert:所以我上面講的"這要看這個list是要做什麼用的"其實是錯的 06/06 11:23
※ 編輯: awert 來自: 114.35.186.241 (06/06 11:26)
→ awert:y 06/06 11:26
→ uziel:補充:autoboxing/unboxing 是 Java 1.5 以後才有的功能 06/06 11:28
推 Nozaki:解說真詳細!感謝 希望隨著寫越多可以越來越懂orz 06/07 15:43
推 Gway:覺得兩位講解的很棒 推一下 解決我一些觀念上的迷失 06/08 10:50
推 CIHM:正解0-0 06/10 22:46