Collection hs = new HashSet();
hs.add(..........);
Iterator i = hs.iterator();
while(i.hasNext()){..........}
问题出来了,接口中的方法都是没实现的抽象方法,Iterator接口中的hashNext()方法究竟是被那个类重写了呢?找api找了半天也没找到. All Known Implementing Classes:
BeanContextSupport.BCSIterator, EventReaderDelegate, Scanner
在这些实现了iterator接口的类中,应该有和HashSet类存在继承关系的类吧,要不这hasNext()方法是从哪蹦出来的呢???
hs.add(..........);
Iterator i = hs.iterator();
while(i.hasNext()){..........}
问题出来了,接口中的方法都是没实现的抽象方法,Iterator接口中的hashNext()方法究竟是被那个类重写了呢?找api找了半天也没找到. All Known Implementing Classes:
BeanContextSupport.BCSIterator, EventReaderDelegate, Scanner
在这些实现了iterator接口的类中,应该有和HashSet类存在继承关系的类吧,要不这hasNext()方法是从哪蹦出来的呢???
解决方案 »
- short int 相加 +=
- java问题
- 如何高性能的将Excel文件读入数据库
- Java 日期算法问题,请高手帮忙!(*^__^*)
- 初学者问题,关于JFrame
- 多边形的坐标系转换
- 高分求教“java运行过程中捕获到异常时如何自动打印异常信息?”
- 一个字符串"abc中国",如果我要读出4个字符,"abc和半个“中"字,这个怎么实现?
- Graphics2D绘图之XOR模式的疑惑
- 请问各位,我安的是jb8但Help下的Help Topic没有内容,我该下什么呀!请给出路经,
- DataInputStream和FileInputStream在传输文件的时候有什么区别?
- 困扰我好几天了,请高手为我解答一下!
Set<Person>set = new HashSet<Person>();
public HashSet() {
map = new HashMap<E,Object>();
}
/**
* Returns an iterator over the elements in this set. The elements
* are returned in no particular order.
*
* @return an Iterator over the elements in this set.
* @see ConcurrentModificationException
*/
public Iterator<E> iterator() {
return map.keySet().iterator();
}他里面有个私有域HashMap。调用HashMap的keySet方法,返回一个KeySet对象,再调用它的iterator方法的。
Collection hs = new HashSet();
hs.add(..........);
Iterator i = hs.iterator();
while(i.hasNext()){..........}
注意第三句,你的HashSet的iterator方法就已经返回实现了Iterator接口的一个对象引用。
主要是从iterator方法里重写了hasNext()方法.
具体在这个方法里是怎么重写的看3楼。不过要更清楚的话应该查看下keySet().iterator()方法的源码了。。
2、他们不一定只继承而且有的时候还要实现,接口类都是一个iterator方法 用来返回实现了Iterator接口对象,就可以调用hasNext()了
学习中。
还有可以选中方法 用 ctrl+alt+h 查看该方法被什么调用了
但不明白的是为啥API中的HashSet里为啥没写iterator方法的相关内容。