黑马程序员技术交流社区

标题: 集合获取元素问题 [打印本页]

作者: \(^o^)/    时间: 2014-4-29 10:17
标题: 集合获取元素问题
本帖最后由 \(^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. }
复制代码

请问下以上两种方法都是获取集合中的元素,上面一种是以遍历的形式,下面一种是以迭代器的形式,请问两种方式有什么不同吗?
作者: 展展    时间: 2014-4-29 10:30
上面for遍历的方法只能在list集合或者子类使用,到set集合和map集合是使用不了的。下面迭代器的方法,list集合set集合map集合都可以使用,注意map集合,也是使用set集合的迭代器滴,酱紫
作者: XinWen    时间: 2014-4-29 10:56
本帖最后由 XinWen 于 2014-4-29 10:57 编辑

我的理解是  迭代器 是个更通用的方法, 他应该是为了 多态 而生的。 就是所有的  Collection 的子类都 提供这个方法。 而 用 角标的方法 是 List 这个体系里面特有的方法  至于效率 ,我猜 肯定是 特别的 最有效率 ,也就是 角标的 最有效率。因为 迭代 要考虑的通用性比 角标的 多。所以更复杂。
作者: 倪大大    时间: 2014-4-29 14:53
你这个只能值是list集合能用 因为list集合有序有角标
迭代器更符合集合的通用取出方法,每个集合都有特定的迭代器取出方法(这是内部实现的,不需要你关心),你直接拿来用就行




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2