package com.shengsiyuan2;import java.util.HashSet;
import java.util.Iterator;public class InteratorTest
{
public static void main(String[] args)
{
HashSet set = new HashSet();
set.add("a");
set.add("b");
set.add("c");
set.add("d");
set.add("e");
Iterator iter = set.iterator();
while(iter.hasNext()) {
String value = (String)iter.next();
System.out.println(value);
}
}
}为了使HashSet 能够提取元素 这里使用了迭代器
这里有个疑问
Iterator iter = set.iterator();
这里是多态
iterator() 方法 返回一个 Iterator<E> 这里有个疑问 接口类型的引用可以指向实现该接口的类的对象API中
在java.util
接口 Iterator<E>
所有已知实现类:
BeanContextSupport.BCSIterator, EventReaderDelegate, Scanner Hashset 没有实现这个接口啊 为什么 Iterator iter的引用 可以指向 set.iterator()
另外 加入 有 接口 A B
B接口继承A 那么 如果有一个类C C实现了 B 接口 那么需要实现A接口中定义的抽象方法么? 求解答 谢谢
import java.util.Iterator;public class InteratorTest
{
public static void main(String[] args)
{
HashSet set = new HashSet();
set.add("a");
set.add("b");
set.add("c");
set.add("d");
set.add("e");
Iterator iter = set.iterator();
while(iter.hasNext()) {
String value = (String)iter.next();
System.out.println(value);
}
}
}为了使HashSet 能够提取元素 这里使用了迭代器
这里有个疑问
Iterator iter = set.iterator();
这里是多态
iterator() 方法 返回一个 Iterator<E> 这里有个疑问 接口类型的引用可以指向实现该接口的类的对象API中
在java.util
接口 Iterator<E>
所有已知实现类:
BeanContextSupport.BCSIterator, EventReaderDelegate, Scanner Hashset 没有实现这个接口啊 为什么 Iterator iter的引用 可以指向 set.iterator()
另外 加入 有 接口 A B
B接口继承A 那么 如果有一个类C C实现了 B 接口 那么需要实现A接口中定义的抽象方法么? 求解答 谢谢
iterator()方法是Iterable接口定义的
set.iterator 返回的是一个什么东西呢?
B接口继承A 那么 如果有一个类C C实现了 B 接口 那么需要实现A接口中定义的抽象方法么? 求解答 A都abstract的就不要,不是的话就全要。
另外util包下面的集合类基本都是实现iterable接口的
所以这跟HashSet是否实现了Iterator接口无关
任何一个类都可以提供一个方法返回某个Iterator实例,无需实现任何接口。这跟你在某个类中提供一个返回String类型的方法是一样的。
具体返回的是怎样一个实例取决于各个类自己怎么实现,HashSet.iterator()的实现是由JDK完成的,有兴趣可以去看源码。