001: /*
002: * Copyright 2003 The Apache Software Foundation.
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016:
017: package velosurf.util;
018:
019: import java.util.List;
020: import java.util.Set;
021:
022: /**
023: * A MultiMap is a Map allowing multiple occurrences of keys.
024: *
025: * @author Mark Richters
026: * @see java.util.Map
027: */
028:
029: public interface MultiMap {
030: // Query Operations
031:
032: /**
033: * Returns the number of values in this multimap.
034: */
035: int size();
036:
037: /**
038: * Returns <tt>true</tt> if this multimap contains no mappings.
039: */
040: boolean isEmpty();
041:
042: /**
043: * Returns <tt>true</tt> if this multimap contains a mapping for
044: * the specified key.
045: * @param key
046: * @return a boolean
047: */
048: boolean containsKey(Object key);
049:
050: /**
051: * Returns <tt>true</tt> if this multimap maps one or more keys to
052: * the specified value.
053: * @param value
054: * @return a boolean
055: */
056: boolean containsValue(Object value);
057:
058: /**
059: * Returns a list of values to which this multimap maps the specified
060: * key.
061: * @param key
062: * @return the list of values to which this map maps the specified
063: * key, the list may be empty if the multimap contains no
064: * mapping for this key.
065: */
066: List get(Object key);
067:
068: // Modification Operations
069:
070: /**
071: * Adds the specified value with the specified key to this multimap.
072: *
073: * @param key
074: * @param value
075: */
076: void put(Object key, Object value);
077:
078: /**
079: * Copies all entries from the specified multimap to this
080: * multimap.
081: * @param t multimap
082: */
083: void putAll(MultiMap t);
084:
085: /**
086: * Removes all mappings for this key from this multimap if present.
087: * @param key
088: */
089: void remove(Object key);
090:
091: /**
092: * Removes the specified key/value mapping from this multimap if present.
093: * @param key
094: * @param value
095: */
096: void remove(Object key, Object value);
097:
098: // Bulk Operations
099:
100: /**
101: * Removes all mappings from this map (optional operation).
102: */
103: void clear();
104:
105: // Views
106:
107: /**
108: * Returns a set view of the keys contained in this multimap.
109: * @return key set
110: */
111: Set keySet();
112:
113: /*
114: * Returns a collection view of the values contained in this map.
115: */
116: //Collection values();
117: // Comparison and hashing
118: /**
119: * Compares the specified object with this multimap for equality.
120: * @param o other object
121: * @return a boolean
122: */
123: boolean equals(Object o);
124:
125: /**
126: * Returns the hash code value for this map.
127: */
128: int hashCode();
129: }
|