Mega Code Archive

 
Categories / Java by API / Java Util
 

Extends AbstractMap

/*  Output: {Virginia=Richmond, Massachusetts=Boston, New York=Albany} [Virginia, Massachusetts, New York] [Richmond, Boston, Albany]  * */ import java.io.Serializable; import java.util.AbstractMap; import java.util.AbstractSet; import java.util.ArrayList; import java.util.Iterator; import java.util.Map; import java.util.Set; public class MainClass {   public static void main (String args[]) {     Map map = new ArrayMap(13);     map.put("Virginia", "Richmond");     map.put("Massachusetts", "Boston");     map.put("New York", "Albany");     System.out.println(map);     System.out.println(map.keySet());     System.out.println(map.values());   } } class ArrayMap extends AbstractMap implements Cloneable, Serializable {   static class Entry implements Map.Entry {     protected Object key, value;     public Entry(Object key, Object value) {       this.key = key;       this.value = value;     }     public Object getKey() {       return key;     }     public Object getValue() {       return value;     }     public Object setValue(Object newValue) {       Object oldValue = value;       value = newValue;       return oldValue;     }     public boolean equals(Object o) {       if (!(o instanceof Map.Entry)) {         return false;       }       Map.Entry e = (Map.Entry) o;       return (key == null ? e.getKey() == null : key.equals(e.getKey()))           && (value == null ? e.getValue() == null : value.equals(e.getValue()));     }     public int hashCode() {       int keyHash = (key == null ? 0 : key.hashCode());       int valueHash = (value == null ? 0 : value.hashCode());       return keyHash ^ valueHash;     }     public String toString() {       return key + "=" + value;     }   }   private Set entries = null;   private ArrayList list;   public ArrayMap() {     list = new ArrayList();   }   public ArrayMap(Map map) {     list = new ArrayList();     putAll(map);   }   public ArrayMap(int initialCapacity) {     list = new ArrayList(initialCapacity);   }   public Set entrySet() {     if (entries == null) {       entries = new AbstractSet() {         public void clear() {           list.clear();         }         public Iterator iterator() {           return list.iterator();         }         public int size() {           return list.size();         }       };     }     return entries;   }   public Object put(Object key, Object value) {     int size = list.size();     Entry entry = null;     int i;     if (key == null) {       for (i = 0; i < size; i++) {         entry = (Entry) (list.get(i));         if (entry.getKey() == null) {           break;         }       }     } else {       for (i = 0; i < size; i++) {         entry = (Entry) (list.get(i));         if (key.equals(entry.getKey())) {           break;         }       }     }     Object oldValue = null;     if (i < size) {       oldValue = entry.getValue();       entry.setValue(value);     } else {       list.add(new Entry(key, value));     }     return oldValue;   }   public Object clone() {     return new ArrayMap(this);   } }