Fork me on GitHub
  • API

    Show / Hide Table of Contents

    Class LruDictionary<TKey, TValue>

    LruDictionary<TKey, TValue> is similar to of Java's HashMap, which has a bounded Limit; When it reaches that Limit, each time a new element is added, the least recently used (LRU) entry is removed.

    Unlike the Java Lucene implementation, this one is thread safe because it is backed by the J2N.Collections.Concurrent.LurchTable`2. Do note that every time an element is read from LruDictionary<TKey, TValue>, a write operation also takes place to update the element's last access time. This is because the LRU order needs to be remembered to determine which element to evict when the Limit is exceeded.

    Note

    This API is experimental and might change in incompatible ways in the next release.

    Inheritance
    System.Object
    LruDictionary<TKey, TValue>
    Implements
    System.Collections.Generic.IDictionary<TKey, TValue>
    System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<TKey, TValue>>
    System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey, TValue>>
    System.Collections.IEnumerable
    Inherited Members
    System.Object.Equals(System.Object)
    System.Object.Equals(System.Object, System.Object)
    System.Object.GetHashCode()
    System.Object.GetType()
    System.Object.MemberwiseClone()
    System.Object.ReferenceEquals(System.Object, System.Object)
    System.Object.ToString()
    Namespace: Lucene.Net.Facet.Taxonomy
    Assembly: Lucene.Net.Facet.dll
    Syntax
    public class LruDictionary<TKey, TValue> : IDictionary<TKey, TValue>, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable
    Type Parameters
    Name Description
    TKey
    TValue

    Constructors

    | Improve this Doc View Source

    LruDictionary(Int32)

    Create a new hash map with a bounded size and with least recently used entries removed.

    Declaration
    public LruDictionary(int limit)
    Parameters
    Type Name Description
    System.Int32 limit

    The maximum size (in number of entries) to which the map can grow before the least recently used entries start being removed.

    Setting limit to a very large value, like System.Int32.MaxValue is allowed, but is less efficient than using J2N.Collections.Generic.Dictionary`2 or System.Collections.Generic.Dictionary`2 because our class needs to keep track of the use order (via an additional doubly-linked list) which is not used when the map's size is always below the maximum size.

    | Improve this Doc View Source

    LruDictionary(Int32, IEqualityComparer<TKey>)

    Create a new hash map with a bounded size and with least recently used entries removed.

    LUCENENET specific overload to allow passing in custom System.Collections.Generic.IEqualityComparer<T>. See LUCENENET-602.

    Declaration
    public LruDictionary(int limit, IEqualityComparer<TKey> comparer)
    Parameters
    Type Name Description
    System.Int32 limit

    The maximum size (in number of entries) to which the map can grow before the least recently used entries start being removed.

    Setting limit to a very large value, like System.Int32.MaxValue is allowed, but is less efficient than using J2N.Collections.Generic.Dictionary`2 or System.Collections.Generic.Dictionary`2 because our class needs to keep track of the use order (via an additional doubly-linked list) which is not used when the map's size is always below the maximum size.

    System.Collections.Generic.IEqualityComparer<TKey> comparer

    The System.Collections.Generic.IEqualityComparer<T> implementation to use when comparing keys, or null to use the default System.Collections.Generic.IEqualityComparer<T> for the type of the key.

    Properties

    | Improve this Doc View Source

    Count

    Declaration
    public virtual int Count { get; }
    Property Value
    Type Description
    System.Int32
    | Improve this Doc View Source

    IsReadOnly

    Declaration
    public virtual bool IsReadOnly { get; }
    Property Value
    Type Description
    System.Boolean
    | Improve this Doc View Source

    Item[TKey]

    Declaration
    public virtual TValue this[TKey key] { get; set; }
    Parameters
    Type Name Description
    TKey key
    Property Value
    Type Description
    TValue
    | Improve this Doc View Source

    Keys

    Declaration
    public virtual ICollection<TKey> Keys { get; }
    Property Value
    Type Description
    System.Collections.Generic.ICollection<TKey>
    | Improve this Doc View Source

    Limit

    Allows changing the dictionary's maximal number of elements which was defined at construction time.

    Note that if the dictionary is already larger than Limit, the current implementation does not shrink it (by removing the oldest elements); Rather, the map remains in its current size as new elements are added, and will only start shrinking (until settling again on the given Limit) if existing elements are explicitly deleted.

    Declaration
    public virtual int Limit { get; set; }
    Property Value
    Type Description
    System.Int32
    | Improve this Doc View Source

    Values

    Declaration
    public virtual ICollection<TValue> Values { get; }
    Property Value
    Type Description
    System.Collections.Generic.ICollection<TValue>

    Methods

    | Improve this Doc View Source

    Add(TKey, TValue)

    Declaration
    public virtual void Add(TKey key, TValue value)
    Parameters
    Type Name Description
    TKey key
    TValue value
    | Improve this Doc View Source

    Add(KeyValuePair<TKey, TValue>)

    Declaration
    public virtual void Add(KeyValuePair<TKey, TValue> item)
    Parameters
    Type Name Description
    System.Collections.Generic.KeyValuePair<TKey, TValue> item
    | Improve this Doc View Source

    Clear()

    Declaration
    public virtual void Clear()
    | Improve this Doc View Source

    Contains(KeyValuePair<TKey, TValue>)

    Declaration
    public virtual bool Contains(KeyValuePair<TKey, TValue> item)
    Parameters
    Type Name Description
    System.Collections.Generic.KeyValuePair<TKey, TValue> item
    Returns
    Type Description
    System.Boolean
    | Improve this Doc View Source

    ContainsKey(TKey)

    Declaration
    public virtual bool ContainsKey(TKey key)
    Parameters
    Type Name Description
    TKey key
    Returns
    Type Description
    System.Boolean
    | Improve this Doc View Source

    CopyTo(KeyValuePair<TKey, TValue>[], Int32)

    Declaration
    public virtual void CopyTo(KeyValuePair<TKey, TValue>[] array, int index)
    Parameters
    Type Name Description
    System.Collections.Generic.KeyValuePair<TKey, TValue>[] array
    System.Int32 index
    | Improve this Doc View Source

    Get(TKey)

    Declaration
    public virtual TValue Get(TKey key)
    Parameters
    Type Name Description
    TKey key
    Returns
    Type Description
    TValue
    | Improve this Doc View Source

    GetEnumerator()

    Declaration
    public virtual IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator()
    Returns
    Type Description
    System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<TKey, TValue>>
    | Improve this Doc View Source

    Put(TKey, TValue)

    Declaration
    public virtual TValue Put(TKey key, TValue value)
    Parameters
    Type Name Description
    TKey key
    TValue value
    Returns
    Type Description
    TValue
    | Improve this Doc View Source

    Remove(TKey)

    Declaration
    public virtual bool Remove(TKey key)
    Parameters
    Type Name Description
    TKey key
    Returns
    Type Description
    System.Boolean
    | Improve this Doc View Source

    Remove(KeyValuePair<TKey, TValue>)

    Declaration
    public virtual bool Remove(KeyValuePair<TKey, TValue> item)
    Parameters
    Type Name Description
    System.Collections.Generic.KeyValuePair<TKey, TValue> item
    Returns
    Type Description
    System.Boolean
    | Improve this Doc View Source

    TryGetValue(TKey, out TValue)

    Declaration
    public virtual bool TryGetValue(TKey key, out TValue value)
    Parameters
    Type Name Description
    TKey key
    TValue value
    Returns
    Type Description
    System.Boolean

    Explicit Interface Implementations

    | Improve this Doc View Source

    IEnumerable.GetEnumerator()

    Declaration
    IEnumerator IEnumerable.GetEnumerator()
    Returns
    Type Description
    System.Collections.IEnumerator

    Implements

    System.Collections.Generic.IDictionary<TKey, TValue>
    System.Collections.Generic.ICollection<T>
    System.Collections.Generic.IEnumerable<T>
    System.Collections.IEnumerable
    • Improve this Doc
    • View Source
    Back to top Copyright © 2022 The Apache Software Foundation, Licensed under the Apache License, Version 2.0
    Apache Lucene.Net, Lucene.Net, Apache, the Apache feather logo, and the Apache Lucene.Net project logo are trademarks of The Apache Software Foundation.
    All other marks mentioned may be trademarks or registered trademarks of their respective owners.