java的collection接口中的iterator方法问题。

collection接口中声明的方法有iterator,而iterator本身又是一个接口,它里边声明有三个方法hasnext,next,remove,实现collect... collection接口中声明的方法有iterator,
而iterator本身又是一个接口,它里边声明有三个方法hasnext,next,remove,
实现collection接口的类是不是实现了以上的那三个iterator方法?
请看以下代码:
Collection c = new HashSet();
c.add(new Name("f1","l1"));
c.add(new Name("f2","l2"));
c.add(new Name("f3","l3"));
Iterator i = c.iterator();
这里c.iterator()容器对象调用iterator方法,这一句的返回值是
API---“在此 collection 的元素上进行迭代的 Iterator”
这句话不是很明白,返回的是对容器中的元素进行迭代的iterator,
这里进行迭代,操作的对象是谁?
c.iterator()本身的返回值就是接口对操作对象的引用吗?
望指教!!!!!!!!!!!!!!!!!!
如果是Name对象的话,name类又没有实现iterator接口,
怎么可以使用iterator接口对象引用这个name对象?
展开
 我来答
yefan_520
2010-04-15 · 超过36用户采纳过TA的回答
知道答主
回答量:100
采纳率:0%
帮助的人:92.4万
展开全部
感觉上你对Collection接口和Iterator接口理解上很模糊,你实现了Iterator接口中方法,而你用Collection的接口对象C调用c.add(object)方法添加了Name对象,那么你在调用c.iterator()方法的时候实际上在运行的时候是Name对象在调用iterator()方法,返回值当然是Name对象了。至于你说的使用iterator接口引用name对象,我不知道你为什么要这么做?能不能详细点 或者是把你想实现的功能说下?
383565309
2010-04-15 · TA获得超过143个赞
知道小有建树答主
回答量:215
采纳率:0%
帮助的人:147万
展开全部
Collection c = new HashSet();
你看API,HashSet实现了Set接口,而Set接口实现了Collection接口.
c.iterator(),这里的c对象的本质其实是HashSet对象.
JAVA多态,理解就明白了.
之所以不用HashSet c = new HashSet();
是因为方便以后修改.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
thinkpack
2010-04-15 · TA获得超过2842个赞
知道大有可为答主
回答量:2114
采纳率:0%
帮助的人:2059万
展开全部
返回的是Iterator的一个实例,这个实例是对调用iterator()的c中元素的迭代。简单来说就是返回迭代器,至于迭代器里面如何遍历某个集合的所有元素,那么你要看Iterator源码了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友56c6436
2019-06-04
知道答主
回答量:3
采纳率:0%
帮助的人:2156
展开全部
Collection接口实现的是Iterable接口,不是Iterator接口,Collection接口中定义的是Iterator接口类型返回值的方法,目的是获得Iterator的迭代器,用来快速遍历用的,我觉得你是有点想不通,为什么要定义一个接口类型的变量这个问题是吗?这就有点像接口引用实现类的作用这个问题,目的是返回一个接口类型的实现类对象,好比是 下面的代码:你仔细看注释哈哈哈
//接口
interface Smoke{
public abstract void smoking();
}
class Student implements Smoke{
@Override
public void smoking() {
System.out.println("课下吸口烟,赛过活神仙");
}
}
//测试类
public class Test {
public static void main(String[] args) {
//调用method方法,获取返回的会吸烟的对象
Smoke s = method();
//通过s变量调用smoking方法,这时实际调用的是Student对象中的smoking方法 s.smoking();
}
//定义一个方法method,用来获取一个具备吸烟功能的对象,并在方法中完成吸烟者的创建
public static Smoke method(){
Smoke sm = new Student();
return sm;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
兴0809
推荐于2018-04-13 · 超过59用户采纳过TA的回答
知道小有建树答主
回答量:121
采纳率:66%
帮助的人:76.5万
展开全部

给你两个例子吧


1.List利用iterator进行for循环遍历

 list l = new ArrayList();
 l.add("aa");
 l.add("bb");
 l.add("cc");
 for (Iterator iter = l.iterator(); iter.hasNext();) {
  String str = (String)iter.next();
  System.out.println(str);
 }

  2.iterator进行while循环遍历

 Iterator iter = l.iterator();
 while(iter.hasNext()){
  String str = (String) iter.next();
  System.out.println(str);
 }
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式