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对象? 展开
而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对象? 展开
6个回答
展开全部
感觉上你对Collection接口和Iterator接口理解上很模糊,你实现了Iterator接口中方法,而你用Collection的接口对象C调用c.add(object)方法添加了Name对象,那么你在调用c.iterator()方法的时候实际上在运行的时候是Name对象在调用iterator()方法,返回值当然是Name对象了。至于你说的使用iterator接口引用name对象,我不知道你为什么要这么做?能不能详细点 或者是把你想实现的功能说下?
展开全部
Collection c = new HashSet();
你看API,HashSet实现了Set接口,而Set接口实现了Collection接口.
c.iterator(),这里的c对象的本质其实是HashSet对象.
JAVA多态,理解就明白了.
之所以不用HashSet c = new HashSet();
是因为方便以后修改.
你看API,HashSet实现了Set接口,而Set接口实现了Collection接口.
c.iterator(),这里的c对象的本质其实是HashSet对象.
JAVA多态,理解就明白了.
之所以不用HashSet c = new HashSet();
是因为方便以后修改.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
返回的是Iterator的一个实例,这个实例是对调用iterator()的c中元素的迭代。简单来说就是返回迭代器,至于迭代器里面如何遍历某个集合的所有元素,那么你要看Iterator源码了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
}
}
//接口
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;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给你两个例子吧
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);
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询