作者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)
1F:→ uziel:ArrayList 内部只能存物件,所以基本型别资料要先包成物件 06/06 11:11
2F:→ awert:其实丢primitive进去它会自动转成object型态 06/06 11:21
3F:→ awert:所以我上面讲的"这要看这个list是要做什麽用的"其实是错的 06/06 11:23
※ 编辑: awert 来自: 114.35.186.241 (06/06 11:26)
4F:→ awert:y 06/06 11:26
5F:→ uziel:补充:autoboxing/unboxing 是 Java 1.5 以後才有的功能 06/06 11:28
6F:推 Nozaki:解说真详细!感谢 希望随着写越多可以越来越懂orz 06/07 15:43
7F:推 Gway:觉得两位讲解的很棒 推一下 解决我一些观念上的迷失 06/08 10:50
8F:推 CIHM:正解0-0 06/10 22:46