org.apache.commons.collections4.map

## Class AbstractReferenceMap.ReferenceEntry<K,V>

- java.lang.Object
- - org.apache.commons.collections4.map.AbstractHashedMap.HashEntry<K,V>
  - - org.apache.commons.collections4.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:
    3.1

- - ### Field Summary

    - ### Fields inherited from class org.apache.commons.collections4.map.AbstractHashedMap.HashEntry

      `hashCode, key, next, value`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ReferenceEntry(AbstractReferenceMap<K,V> parent, AbstractHashedMap.HashEntry<K,V> next, int hashCode, K key, V value)` Creates a new entry object for the ReferenceMap.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `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.
    `protected void` | `nullValue()` This method can be overriden to provide custom logic to purge value
    `protected void` | `onPurge()` This is the callback for custom "after purge" logic
    `protected boolean` | `purge(Reference<?> ref)` Purges the specified reference
    `V` | `setValue(V obj)` Sets the value of the entry.
    `protected <T> Object` | `toReference(AbstractReferenceMap.ReferenceStrength type, T referent, int hash)` Constructs a reference of the given type to the given referent.

    - ### Methods inherited from class org.apache.commons.collections4.map.AbstractHashedMap.HashEntry

      `toString`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface java.util.Map.Entry

      `comparingByKey, comparingByKey, comparingByValue, comparingByValue`

- - ### Constructor Detail

    - #### ReferenceEntry

          public ReferenceEntry(AbstractReferenceMap<K,V> parent,
                                AbstractHashedMap.HashEntry<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> Object toReference(AbstractReferenceMap.ReferenceStrength 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.
      Type Parameters:
        `T` - the type of the referenced object
      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
      Returns:
        the reference to the object

    - #### onPurge

          protected void onPurge()

      This is the callback for custom "after purge" logic

    - #### purge

          protected boolean purge(Reference<?> ref)

      Purges the specified reference
      Parameters:
        `ref` - the reference to purge
      Returns:
        true or false

    - #### next

          protected AbstractReferenceMap.ReferenceEntry<K,V> next()

      Gets the next entry in the bucket.
      Returns:
        the next entry in the bucket

    - #### nullValue

          protected void nullValue()

      This method can be overriden to provide custom logic to purge value

Copyright © 2001–2019 The Apache Software Foundation. All rights reserved.