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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© \(^o^)/ 中级黑马   /  2014-4-29 10:17  /  1338 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 \(^o^)/ 于 2014-4-29 15:44 编辑
  1. for(int x=0;x<a.size();x++)
  2. {
  3. sop("a("+x+")="+a.get(x));
  4. }

  5. Iterator it=a.iterator();
  6. while(it.hasNext())
  7. {
  8. sop("next:"+it.next());
  9. }
复制代码

请问下以上两种方法都是获取集合中的元素,上面一种是以遍历的形式,下面一种是以迭代器的形式,请问两种方式有什么不同吗?

3 个回复

倒序浏览
上面for遍历的方法只能在list集合或者子类使用,到set集合和map集合是使用不了的。下面迭代器的方法,list集合set集合map集合都可以使用,注意map集合,也是使用set集合的迭代器滴,酱紫
回复 使用道具 举报
本帖最后由 XinWen 于 2014-4-29 10:57 编辑

我的理解是  迭代器 是个更通用的方法, 他应该是为了 多态 而生的。 就是所有的  Collection 的子类都 提供这个方法。 而 用 角标的方法 是 List 这个体系里面特有的方法  至于效率 ,我猜 肯定是 特别的 最有效率 ,也就是 角标的 最有效率。因为 迭代 要考虑的通用性比 角标的 多。所以更复杂。
回复 使用道具 举报
你这个只能值是list集合能用 因为list集合有序有角标
迭代器更符合集合的通用取出方法,每个集合都有特定的迭代器取出方法(这是内部实现的,不需要你关心),你直接拿来用就行
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马