一道不明白的Java题

Sodino 2008-12-05 04:32:51
Question 61
Give:
11. public static Iterator reverse(List list) {
12. Collections.reverse(list);
13. return list.iterator();
14. }
15. public static void main(String[] args) {
16. List list = new ArrayList();
17. list.add(“ 1”); list.add(“2”); list.add(“3”);
18. for (Object obj: reverse(list))
19. System.out.print(obj + “,”);

20. }
!(R)What is the result?
A. 3,2, 1,
B. 1, 2, 3,
C. Compilation fails.
D. The code runs with nooutput.
E. An exception is thrown at runtime.
Answer: C

为什么啊??我想答应应该是B,因为Line18反转了List,Line12又再反置了。。
...全文
1797 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
oigmjker 2008-12-21
  • 打赏
  • 举报
回复
reverse(list)方法返回的是一个Iterator的实例,但是foreach语句中只能遍历数组或实现了Iterable的类,List
已经实现了Iterable接口,请查看继承树,for(Object li:List)或者for(Object o:anyArray[])这两个格式才是可以接受的,Iterator没有实现Iterable,所以会错。
孤独剑客 2008-12-05
  • 打赏
  • 举报
回复
foreach语句
java 1.5增加的
记住格式就行了
Andy__Huang 2008-12-05
  • 打赏
  • 举报
回复
Iterator里元素的顺序可以随便改变吗?
ssqtjffcu 2008-12-05
  • 打赏
  • 举报
回复

reverse(list)返回的是Iterator,当然编译不过了,
chengyu2099 2008-12-05
  • 打赏
  • 举报
回复

11. public static Iterator reverse(List list) {
12. Collections.reverse(list);
13. return list.iterator();
14. }
15. public static void main(String[] args) {
16. List list = new ArrayList();
17. list.add(“ 1”); list.add(“2”); list.add(“3”);
18. for (Object obj: reverse(list)) // 出错了 Can only iterate over an array or an instance of java.lang.Iterable
// 这里要求是一个对象:数组(集合)这是JDK 1.5 for 新特性
19. System.out.print(obj + “,”);
20. }
!(R)What is the result?
A. 3,2, 1,
B. 1, 2, 3,
C. Compilation fails.
D. The code runs with nooutput.
E. An exception is thrown at runtime.
Answer: C

tiancuiwusky 2008-12-05
  • 打赏
  • 举报
回复
FOR循环的新用法不支持reverse,这是SCJP中的一个题
pepsighost 2008-12-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 liangzai1234 的回复:]
只能通过Iterator数组或实例进行迭代
[/Quote]
是这样的。换成List就有结果
pepsighost 2008-12-05
  • 打赏
  • 举报
回复
18行的reverse(list)是方法吧
liangzai1234 2008-12-05
  • 打赏
  • 举报
回复
只能通过Iterator数组或实例进行迭代
gongfuliang 2008-12-05
  • 打赏
  • 举报
回复
这是jdk1.5之后增强的for循环。有两种类型的对象可以通过这种方法来遍历——数组和实现了java.lang.Iterable接口的类的实例

即使你允许你这么循环,你的代码也是错的,每一次List.iterator都会重新生成一个迭代器,死循环

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧