A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何苦似梦离 中级黑马   /  2014-2-17 10:41  /  1856 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 何苦似梦离 于 2014-2-17 11:23 编辑
  1. import java.util.Collection;
  2. import java.util.ArrayList;
  3. import java.util.Iterator;
  4. import java.util.LinkedList;

  5. class test
  6. {
  7.         public static void main(String[] args)
  8.         {
  9.                 Collection<Integer> collection = new LinkedList<Integer>();

  10.                 collection.add(4);
  11.                 collection.add(1);
  12.                 collection.add(7);
  13.                 collection.add(5);

  14.                 Iterator<Integer> it = collection.iterator();
  15.                
  16.                 for(Integer t : it) //为什么编译提示这里不用使用高级for
  17.                 {
  18.                         System.out.println(t);
  19.                 }

  20.                 System.out.println(collection);
  21.         }
  22. }
复制代码


评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

9 个回复

倒序浏览
你要循环输出的是集合,而不是迭代器。。迭代器也只是取出集合中元素的一种方式,并不是集合。所以你的for里面的it应该改为集合collection 。
  1. class forDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Collection<Integer> collection = new LinkedList<Integer>();

  6.                 collection.add(4);
  7.                 collection.add(1);
  8.                 collection.add(7);
  9.                 collection.add(5);

  10.                 Iterator<Integer> it = collection.iterator();
  11.                
  12.                 for(Integer t : collection ) //为什么编译提示这里不用使用高级for
  13.                 {
  14.                         System.out.println(t);
  15.                 }

  16.                 System.out.println(collection);
  17.         }
  18. }
复制代码



点评

Tanks  发表于 2014-2-17 11:22

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
同学,谢谢你的提问,在探寻的过程中我对自己的知识体系也有了弥补。。
  1. class test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Collection<Integer> collection = new LinkedList<Integer>();

  6.                 collection.add(4);
  7.                 collection.add(1);
  8.                 collection.add(7);
  9.                 collection.add(5);

  10.                 //Iterator<Integer> it = collection.iterator();
  11.                
  12.                 for(int t : collection) //为什么编译提示这里不用使用高级for
  13.                 {
  14.                         System.out.println(t);
  15.                 }

  16.                 System.out.println(collection);
  17.         }
  18. }
复制代码

就如:我修改的那样,你看下。
我觉得迭代器就是一个取出集合数据的方式,而高级for循环针对的是你要遍历的对象,你可以遍历一个集合,但不能遍历一个迭代器吧,集合里面存在的是每个元素,而迭代器中存储的各种方法比如,next(),itHasNext(),这样的东西。 所以不能针对迭代器遍历

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
学习了,开始的时候我也进入了误区,IDE提示是:Can only iterate over an array or an instance of java.lang.Iterable,翻译:iterator遍历一个为数组或是实现Iterable的子类,而上面for循环遍历的是迭代器
回复 使用道具 举报
....... 来自手机 中级黑马 2014-2-19 22:53:57
报纸
是你用的方式不对。 高级for遍历的是对象不是迭代器
回复 使用道具 举报
通过这个问题,我也了解到了以前不知道的只知识点,顶一个……
回复 使用道具 举报
哥们!你用错了啦!~你怎么吧迭代器的it传入到高级for循环中去了!!你直接把collection这个对象引用调用到高级for中去就可以啦!!希望对你有帮助哈
回复 使用道具 举报
薛旻 中级黑马 2014-2-20 11:38:22
8#
高级for循环本身就可以迭代获取集合了,也就用不着迭代器Iterator了。
如果使用了迭代器,那么也就没必要用高级for循环了,两者功能有点点冲突。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报

通过这个问题,我也了解到了以前不知道的只知识点,顶一个……
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马