📄 intset.java~3~
字号:
package dveiterator;
import java.util.*;
public class IntSet {
private Hashtable ht = new Hashtable();
// 设计一个内部的迭代器类操纵collection类
public static class Iterator {
private IntSet set;
private Enumeration e;
private Integer current;
public Iterator (IntSet in) {
set = in;
}
public void first () {
e = set.ht.keys ();
next ();
}
public boolean isDone () {
return current == null;
}
public int currentItem () {
return current.intValue ();
}
public void next () {
try {
current = (Integer) e.nextElement ();
}
catch (NoSuchElementException e) {
current = null;
}
}
}
public void add (int in) {
ht.put (new Integer (in), "null");
}
public boolean isMember (int i) {
return ht.containsKey (new Integer (i));
}
public Hashtable getHashtable () {
return ht;
}
//在聚集类的内部包括生成迭代器createIterator的方法
public Iterator createIterator () {
return new Iterator (this);
}
}
//迭代器的应用测测试
class IteratorDemo {
public static void main (String[] args) {
IntSet set = new IntSet ();
for (int i = 2; i < 10; i += 2)
set.add (i);
for (int i = 1; i < 9; i++)
System.out.print (i + "-" + set.isMember (i) + " ");
//客户请求collection对象生成多个迭代器
IntSet.Iterator it1 = set.createIterator ();
IntSet.Iterator it2 = set.createIterator ();
//客户使用first(), isDone(), next(), currentItem()方法
System.out.print ("\nIterator: ");
for (it1.first (), it2.first (); !it1.isDone (); it1.next (), it2.next ())
System.out.print (it1.currentItem () + " " + it2.currentItem () + " ");
//Java习惯使用一个collection历遍器,称为Enumeration
System.out.print ("\nEnumeration: ");
for (Enumeration e = set.getHashtable ().keys (); e.hasMoreElements (); )
System.out.print (e.nextElement () + " ");
System.out.println ();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -