Class LazyMap<K,​V>

  • Type Parameters:
    K - the key type.
    V - the value type.
    All Implemented Interfaces:
    Map<K,​V>

    @NotThreadSafe
    public class LazyMap<K,​V>
    extends AbstractMap<K,​V>
    implements Map<K,​V>
    A Map that is backed by a delegate map that contains suppliers for the values that are called lazily when required. The values returned from the delegate are cached so they are only retrieved once.

    The goal is to reduce the overhead required to instantiate and store entries which might not be used. For example, when rendering Velocity templates, the context map is populated with many things that are only ever required occasionally.

    Note: even though this class is effectively immutable and does not support direct mutation, the caching strategy is not thread-safe and should not be used if thread-safety is required. Adding thread-safety to this class would be fairly trivial through.