001: /*
002: * Copyright 1999-2004 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: package org.apache.commons.collections;
017:
018: import java.util.Map;
019:
020: /** A default implementation of {@link java.util.Map.Entry}
021: *
022: * @since 1.0
023: * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
024: * @author <a href="mailto:mas@apache.org">Michael A. Smith</a>
025: */
026:
027: public class DefaultMapEntry implements Map.Entry {
028:
029: private Object key;
030: private Object value;
031:
032: /**
033: * Constructs a new <Code>DefaultMapEntry</Code> with a null key
034: * and null value.
035: */
036: public DefaultMapEntry() {
037: }
038:
039: /**
040: * Constructs a new <Code>DefaultMapEntry</Code> with the given
041: * key and given value.
042: *
043: * @param key the key for the entry, may be null
044: * @param value the value for the entyr, may be null
045: */
046: public DefaultMapEntry(Object key, Object value) {
047: this .key = key;
048: this .value = value;
049: }
050:
051: /**
052: * Implemented per API documentation of
053: * {@link java.util.Map.Entry#equals(Object)}
054: **/
055: public boolean equals(Object o) {
056: if (o == null)
057: return false;
058: if (o == this )
059: return true;
060:
061: if (!(o instanceof Map.Entry))
062: return false;
063: Map.Entry e2 = (Map.Entry) o;
064: return ((getKey() == null ? e2.getKey() == null : getKey()
065: .equals(e2.getKey())) && (getValue() == null ? e2
066: .getValue() == null : getValue().equals(e2.getValue())));
067: }
068:
069: /**
070: * Implemented per API documentation of
071: * {@link java.util.Map.Entry#hashCode()}
072: **/
073: public int hashCode() {
074: return ((getKey() == null ? 0 : getKey().hashCode()) ^ (getValue() == null ? 0
075: : getValue().hashCode()));
076: }
077:
078: // Map.Entry interface
079: //-------------------------------------------------------------------------
080:
081: /**
082: * Returns the key.
083: *
084: * @return the key
085: */
086: public Object getKey() {
087: return key;
088: }
089:
090: /**
091: * Returns the value.
092: *
093: * @return the value
094: */
095: public Object getValue() {
096: return value;
097: }
098:
099: // Properties
100: //-------------------------------------------------------------------------
101:
102: /**
103: * Sets the key. This method does not modify any map.
104: *
105: * @param key the new key
106: */
107: public void setKey(Object key) {
108: this .key = key;
109: }
110:
111: /** Note that this method only sets the local reference inside this object and
112: * does not modify the original Map.
113: *
114: * @return the old value of the value
115: * @param value the new value
116: */
117: public Object setValue(Object value) {
118: Object answer = this.value;
119: this.value = value;
120: return answer;
121: }
122:
123: }
|