我该如何申报迭代器?

时间:2010-06-10 10:18:21

标签: java iterator

首选哪种形式:

String my = "Which form shall I use?";
Iterator iter = my.iterator();

Iterator<String> iter = my.iterator();

我个人更喜欢前者,但在我的材料中,他们使用后者。

4 个答案:

答案 0 :(得分:11)

在后一种形式中,迭代器是强类型的,这是优选的

答案 1 :(得分:7)

您应该在API提供时使用泛型。也就是说,后一种选择是可取的。

Iterator iter = someList.iterator();
String s = (String) iter.next();  // prone to class cast exceptions.
                                  // What if someone for instance accidentally
                                  // put a CharSequence in the list?

VS

Iterator<String> iter = someList.iterator();
String s = iter.next();           // guaranteed typesafe at compile-time.

(但是,String没有实现Iterable<String>,但我确信你的意思是List<String> my = Arrays.asList("Which form shall I use?")

答案 2 :(得分:5)

后者。泛型参数避免显式强制转换,并帮助您维护类型安全性。但是,String不是Iterable。

答案 3 :(得分:2)

字符串不可迭代?如果你想迭代你需要做的事情:

String my = "Which form shall I use?";
for(char c : my.toCharArray())
    System.out.println(c);