⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 intset.java~2~

📁 《深入浅出设计模式》的完整源代码
💻 JAVA~2~
字号:
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 ();

// 4. Clients use the first(), isDone(), next(), currentItem() protocol
    System.out.print ("\nIterator: ");
    for (it1.first (), it2.first (); !it1.isDone (); it1.next (), it2.next ())
      System.out.print (it1.currentItem () + " " + it2.currentItem () + " ");

// Java uses a different collection traversal "idiom" called 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 + -