Class SynchronizedLinkedMap<K,V>

java.lang.Object
com.pnfsoftware.jeb.util.collect.SynchronizedLinkedMap<K,V>
Type Parameters:
K - key type
V - value type

@Ser public class SynchronizedLinkedMap<K,V> extends Object
A serializable, inefficient, fully synchronized, linked pseudo-map. The insertion order is maintained.

"Pseudo" because this class does not implement the map interface, for the primary reason that iterators on keys/values/items would not abide by the contract requested by Map (mostly, that modifying the entries while iterating also modifies the backing map). Note that this class offers a copyOfKeys() method which can safely be used to iterate the keys of the map at the time that method was executed. Modifying that set does not impact the map itself. Unlike synchronized maps provided by Collections, there is no need to synchronize when iterating over the collection returned by copyOfKeys().

Similarly to ConcurrentHashMap (but unlike LinkedHashMap), this class does not allow null key or null value.

Methods of this object are guaranteed to never raise ConcurrentModificationException.

  • Constructor Details

    • SynchronizedLinkedMap

      public SynchronizedLinkedMap()
      Create an empty synchronized linked map.
  • Method Details

    • size

      public int size()
      Returns:
      number of mappings
    • clear

      public void clear()
      Remove all mappings.
    • isEmpty

      public boolean isEmpty()
      Returns:
      true if no mapping exists
    • containsKey

      public boolean containsKey(K key)
      Parameters:
      key - key
      Returns:
      true if the key is present
    • containsValue

      public boolean containsValue(V value)
      Parameters:
      value - value
      Returns:
      true if the value is present
    • get

      public V get(K key)
      Parameters:
      key - key
      Returns:
      value associated with the key, or null
    • put

      public V put(K key, V value)
      Add or replace a mapping.
      Parameters:
      key - non-null key
      value - non-null value
      Returns:
      previous value, or null
    • remove

      public V remove(K key)
      Remove a mapping.
      Parameters:
      key - key
      Returns:
      removed value, or null
    • copyOfKeys

      public Set<K> copyOfKeys()
      Copy the current keys.
      Returns:
      copy of the key set
    • copyOfValues

      public List<V> copyOfValues()
      Copy the current values.
      Returns:
      copy of the values
    • firstKey

      public K firstKey()
      Returns:
      first key in insertion order
      Throws:
      NoSuchElementException - if the map is empty
    • toString

      public String toString()
      Overrides:
      toString in class Object