Class AbstractReferenceMap.ReferenceEntry

  • All Implemented Interfaces:
    java.util.Map.Entry, KeyValue
    Enclosing class:
    AbstractReferenceMap

    protected static class AbstractReferenceMap.ReferenceEntry
    extends AbstractHashedMap.HashEntry
    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
    • Constructor Detail

      • ReferenceEntry

        public ReferenceEntry​(AbstractReferenceMap parent,
                              AbstractHashedMap.HashEntry next,
                              int hashCode,
                              java.lang.Object key,
                              java.lang.Object 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 java.lang.Object getKey()
        Gets the key from the entry. This method dereferences weak and soft keys and thus may return null.
        Specified by:
        getKey in interface KeyValue
        Specified by:
        getKey in interface java.util.Map.Entry
        Overrides:
        getKey in class AbstractHashedMap.HashEntry
        Returns:
        the key, which may be null if it was garbage collected
      • getValue

        public java.lang.Object getValue()
        Gets the value from the entry. This method dereferences weak and soft value and thus may return null.
        Specified by:
        getValue in interface KeyValue
        Specified by:
        getValue in interface java.util.Map.Entry
        Overrides:
        getValue in class AbstractHashedMap.HashEntry
        Returns:
        the value, which may be null if it was garbage collected
      • setValue

        public java.lang.Object setValue​(java.lang.Object obj)
        Sets the value of the entry.
        Specified by:
        setValue in interface java.util.Map.Entry
        Overrides:
        setValue in class AbstractHashedMap.HashEntry
        Parameters:
        obj - the object to store
        Returns:
        the previous value
      • equals

        public boolean equals​(java.lang.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 java.util.Map.Entry
        Overrides:
        equals in class AbstractHashedMap.HashEntry
        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 java.util.Map.Entry
        Overrides:
        hashCode in class AbstractHashedMap.HashEntry
        Returns:
        the hashcode of the entry
      • toReference

        protected java.lang.Object toReference​(int type,
                                               java.lang.Object 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