01: /*
02: * Copyright 2001 Sun Microsystems, Inc. All rights reserved.
03: * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to license terms.
04: */
05: package com.sun.portal.desktop.util;
06:
07: import java.util.Collection;
08: import java.util.Map;
09: import java.util.HashMap;
10: import java.util.Set;
11: import java.util.List;
12: import java.util.ArrayList;
13: import java.util.Iterator;
14:
15: public class OrderedMap extends HashMap {
16:
17: private Set keys = new OrderedSet();
18:
19: public void clear() {
20: super .clear();
21: keys.clear();
22: }
23:
24: /**
25: * note nested for loop. use w/ caution.
26: */
27: public Set entrySet() {
28: OrderedSet set = new OrderedSet();
29: for (Iterator i = keys.iterator(); i.hasNext();) {
30: Object key = i.next();
31: for (Iterator j = super .entrySet().iterator(); j.hasNext();) {
32: Map.Entry entry = (Map.Entry) j.next();
33: if (entry.getKey().equals(key)) {
34: set.add(entry);
35: break;
36: }
37: }
38: }
39: return set;
40: }
41:
42: public Set keySet() {
43: return keys;
44: }
45:
46: public void add(Object key, Object value) {
47: put(key, value);
48: }
49:
50: public Object put(Object key, Object value) {
51: Object old = super .put(key, value);
52: keys.add(key);
53: return old;
54: }
55:
56: public void putAll(Map t) {
57: super .putAll(t);
58: for (Iterator i = t.entrySet().iterator(); i.hasNext();) {
59: Map.Entry entry = (Map.Entry) i.next();
60: keys.add(entry.getKey());
61: }
62: }
63:
64: public Object remove(Object key) {
65: Object old = super .remove(key);
66: keys.remove(key);
67: return old;
68: }
69:
70: public Collection values() {
71: List valuesList = new ArrayList();
72:
73: for (Iterator i = keys.iterator(); i.hasNext();) {
74: valuesList.add(get(i.next()));
75: }
76:
77: return valuesList;
78: }
79:
80: }
|