1 /*
2 * Created on 2003-6-10 16:21:22 by joel guo
3 *
4 * vTradEx Information Technology Inc.
5 */
6 package com.cyclops.dbdigger.util;
7 import java.util.ArrayList;
8 import java.util.Collection;
9 import java.util.Comparator;
10 import java.util.HashMap;
11 import java.util.Iterator;
12 import java.util.List;
13 import java.util.Map;
14 import java.util.Set;
15 import java.util.TreeSet;
16 /*** Add description <font color="red">HERE</font>!
17 *
18 * @author <a href="mailto:joeblack.guo@vtradex.com">joel guo</a>
19 * @since 2003-6-10 16:21:22
20 */
21 public class ArrayMap extends HashMap {
22 private class KeyComparator implements Comparator {
23 /*** Override method compare() of super class
24 * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
25 */
26 public int compare(Object o1, Object o2) {
27 return keys.indexOf(o1) - keys.indexOf(o2);
28 }
29 }
30 private KeyComparator keyComparator = new KeyComparator();
31 private List keys = new ArrayList();
32 /*** Override method clear() of super class
33 * @see java.util.Map#clear()
34 */
35 public void clear() {
36 keys.clear();
37 super.clear();
38 }
39 /*** Override method keySet() in super class
40 * @see java.util.Map#keySet()
41 */
42 public Set keySet() {
43 TreeSet ts = new TreeSet(keyComparator);
44 ts.addAll(keys);
45 return ts;
46 }
47 /*** Override method put() of super class
48 * @see java.util.Map#put(java.lang.Object, java.lang.Object)
49 */
50 public Object put(Object key, Object value) {
51 if (keys.contains(key)) {
52 keys.remove(key);
53 }
54 keys.add(key);
55 return super.put(key, value);
56 }
57 /*** Override method putAll() of super class
58 * @see java.util.Map#putAll(java.util.Map)
59 */
60 public void putAll(Map t) {
61 for (Iterator i = t.keySet().iterator(); i.hasNext();) {
62 Object key = (Object) i.next();
63 Object value = t.get(key);
64 put(key, value);
65 }
66 }
67 /*** Override method remove() of super class
68 * @see java.util.Map#remove(java.lang.Object)
69 */
70 public Object remove(Object key) {
71 keys.remove(key);
72 return super.remove(key);
73 }
74 /*** Override method values() of super class
75 * @see java.util.Map#values()
76 */
77 public Collection values() {
78 List ret = new ArrayList();
79 for (Iterator i = keys.iterator(); i.hasNext();) {
80 Object key = (Object) i.next();
81 ret.add(get(key));
82 }
83 return ret;
84 }
85 }
This page was automatically generated by Maven