org.apache.commons.collections.map
Class AbstractReferenceMap.ReferenceEntry<K,V>

java.lang.Object
  extended by org.apache.commons.collections.map.AbstractHashedMap.HashEntry<K,V>
      extended by org.apache.commons.collections.map.AbstractReferenceMap.ReferenceEntry<K,V>
All Implemented Interfaces:
Map.Entry<K,V>, KeyValue<K,V>
Enclosing class:
AbstractReferenceMap<K,V>

protected static class AbstractReferenceMap.ReferenceEntry<K,V>
extends AbstractHashedMap.HashEntry<K,V>

A MapEntry implementation for the map.

If getKey() or getValue() returns null, it means the mapping is stale and should be removed.

Since:
Commons Collections 3.1

Field Summary
protected  AbstractReferenceMap<K,V> parent
          The parent map
protected  Reference<K> refKey
           
protected  Reference<V> refValue
           
 
Fields inherited from class org.apache.commons.collections.map.AbstractHashedMap.HashEntry
hashCode, next
 
Constructor Summary
AbstractReferenceMap.ReferenceEntry(AbstractReferenceMap<K,V> parent, AbstractReferenceMap.ReferenceEntry<K,V> next, int hashCode, K key, V value)
          Creates a new entry object for the ReferenceMap.
 
Method Summary
 boolean equals(Object obj)
          Compares this map entry to another.
 K getKey()
          Gets the key from the entry.
 V getValue()
          Gets the value from the entry.
 int hashCode()
          Gets the hashcode of the entry using temporary hard references.
protected  AbstractReferenceMap.ReferenceEntry<K,V> next()
          Gets the next entry in the bucket.
 V setValue(V obj)
          Sets the value of the entry.
protected
<T> Reference<T>
toReference(int type, T referent, int hash)
          Constructs a reference of the given type to the given referent.
 
Methods inherited from class org.apache.commons.collections.map.AbstractHashedMap.HashEntry
setKey, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

parent

protected final AbstractReferenceMap<K,V> parent
The parent map


refKey

protected Reference<K> refKey

refValue

protected Reference<V> refValue
Constructor Detail

AbstractReferenceMap.ReferenceEntry

public AbstractReferenceMap.ReferenceEntry(AbstractReferenceMap<K,V> parent,
                                           AbstractReferenceMap.ReferenceEntry<K,V> next,
                                           int hashCode,
                                           K key,
                                           V value)
Creates a new entry object for the ReferenceMap.

Parameters:
parent - the parent map
next - the next entry in the hash bucket
hashCode - the hash code of the key
key - the key
value - the value
Method Detail

getKey

public K getKey()
Gets the key from the entry. This method dereferences weak and soft keys and thus may return null.

Specified by:
getKey in interface Map.Entry<K,V>
Specified by:
getKey in interface KeyValue<K,V>
Overrides:
getKey in class AbstractHashedMap.HashEntry<K,V>
Returns:
the key, which may be null if it was garbage collected

getValue

public V getValue()
Gets the value from the entry. This method dereferences weak and soft value and thus may return null.

Specified by:
getValue in interface Map.Entry<K,V>
Specified by:
getValue in interface KeyValue<K,V>
Overrides:
getValue in class AbstractHashedMap.HashEntry<K,V>
Returns:
the value, which may be null if it was garbage collected

setValue

public V setValue(V obj)
Sets the value of the entry.

Specified by:
setValue in interface Map.Entry<K,V>
Overrides:
setValue in class AbstractHashedMap.HashEntry<K,V>
Parameters:
obj - the object to store
Returns:
the previous value

equals

public boolean equals(Object obj)
Compares this map entry to another.

This implementation uses isEqualKey and isEqualValue on the main map for comparison.

Specified by:
equals in interface Map.Entry<K,V>
Overrides:
equals in class AbstractHashedMap.HashEntry<K,V>
Parameters:
obj - the other map entry to compare to
Returns:
true if equal, false if not

hashCode

public int hashCode()
Gets the hashcode of the entry using temporary hard references.

This implementation uses hashEntry on the main map.

Specified by:
hashCode in interface Map.Entry<K,V>
Overrides:
hashCode in class AbstractHashedMap.HashEntry<K,V>
Returns:
the hashcode of the entry

toReference

protected <T> Reference<T> toReference(int type,
                                       T referent,
                                       int hash)
Constructs a reference of the given type to the given referent. The reference is registered with the queue for later purging.

Parameters:
type - HARD, SOFT or WEAK
referent - the object to refer to
hash - the hash code of the key of the mapping; this number might be different from referent.hashCode() if the referent represents a value and not a key

next

protected AbstractReferenceMap.ReferenceEntry<K,V> next()
Gets the next entry in the bucket.

Returns:
the next entry in the bucket


Copyright © 2005-2005 Apache Software Foundation, Matt Hall, John Watkinson. All Rights Reserved.