Class CopyOnWriteMap<K,V>

java.lang.Object
net.datafaker.internal.helper.CopyOnWriteMap<K,V>
All Implemented Interfaces:
Map<K,V>

public class CopyOnWriteMap<K,V> extends Object implements Map<K,V>
This is a Copy On Write map. The main idea behind this is that there is lots of static info per provider to make the providers operate. At the same time there is no need to load all the info at the start since we don't know which providers will be used and loading for all takes time. For that reason it is loaded on request and stored in these Copy On Write maps. Since it is loaded only once per provider and after that is only read then it should be ok and moreover it will allow to have non-blocking reads. In case for whatever reason there is a need to change this class, please double-check jmh report before and after e.g. mvn clean package exec:exec -Dbenchmarks="DatafakerSimpleMethods" -Ddatafaker.version=2.2.3-SNAPSHOT
  • Constructor Details

    • CopyOnWriteMap

      public CopyOnWriteMap(Supplier<Map<K,V>> mapSupplier)
  • Method Details

    • size

      public int size()
      Specified by:
      size in interface Map<K,V>
    • isEmpty

      public boolean isEmpty()
      Specified by:
      isEmpty in interface Map<K,V>
    • containsKey

      public boolean containsKey(Object key)
      Specified by:
      containsKey in interface Map<K,V>
    • containsValue

      public boolean containsValue(Object value)
      Specified by:
      containsValue in interface Map<K,V>
    • get

      public V get(Object key)
      Specified by:
      get in interface Map<K,V>
    • putIfAbsent

      public V putIfAbsent(K key, V value)
      Specified by:
      putIfAbsent in interface Map<K,V>
    • put

      public V put(K key, V value)
      Specified by:
      put in interface Map<K,V>
    • remove

      public V remove(Object key)
      Specified by:
      remove in interface Map<K,V>
    • putAll

      public void putAll(Map<? extends K,? extends V> m)
      Specified by:
      putAll in interface Map<K,V>
    • clear

      public void clear()
      Specified by:
      clear in interface Map<K,V>
    • keySet

      public Set<K> keySet()
      Specified by:
      keySet in interface Map<K,V>
    • values

      public Collection<V> values()
      Specified by:
      values in interface Map<K,V>
    • entrySet

      public Set<Map.Entry<K,V>> entrySet()
      Specified by:
      entrySet in interface Map<K,V>
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getOrDefault

      public V getOrDefault(Object key, V defaultValue)
      Specified by:
      getOrDefault in interface Map<K,V>