提问一个关于Hashtable使用的小例子,谢谢!

解决方案 »

  1. 小弟给个先,呵呵!
    import java.util.*;public class AssocArray extends Dictionary {
      private Vector keys = new Vector();
      private Vector values = new Vector();
      public int size() { return keys.size(); }
      public boolean isEmpty() {
        return keys.isEmpty();
      }
      public Object put(Object key, Object value) {
        keys.addElement(key);
        values.addElement(value);
        return key;
      }
      public Object get(Object key) {
        int index = keys.indexOf(key);
        // indexOf() Returns -1 if key not found:
        if(index == -1) return null;
        return values.elementAt(index);
      }
      public Object remove(Object key) {
        int index = keys.indexOf(key);
        if(index == -1) return null;
        keys.removeElementAt(index);
        Object returnval = values.elementAt(index);
        values.removeElementAt(index);
        return returnval;
      }
      public Enumeration keys() {
        return keys.elements();
      }
      public Enumeration elements() {
        return values.elements();
      }
      // Test it:
      public static void main(String[] args) {
        AssocArray aa = new AssocArray();
        for(char c = 'a'; c <= 'z'; c++)
          aa.put(String.valueOf(c),
                 String.valueOf(c)
                 .toUpperCase());
        char[] ca = { 'a', 'e', 'i', 'o', 'u' };
        for(int i = 0; i < ca.length; i++)
          System.out.println("Uppercase: " +
                 aa.get(String.valueOf(ca[i])));
      }
    } ///:~
      

  2. import java.util.*;class Counter { 
      int i = 1; 
      public String toString() { 
        return Integer.toString(i); 
      }
    }class Statistics {
      public static void main(String[] args) {
        Hashtable ht = new Hashtable();
        for(int i = 0; i < 10000; i++) {
          // Produce a number between 0 and 20:
          Integer r = 
            new Integer((int)(Math.random() * 20));
          if(ht.containsKey(r))
            ((Counter)ht.get(r)).i++;
          else
            ht.put(r, new Counter());
        }
        System.out.println(ht);
      }
    } ///:~
      

类似问题 »