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<TKey, TValue>. 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
    object
    LruDictionary<TKey, TValue>
    Implements
    IDictionary<TKey, TValue>
    ICollection<KeyValuePair<TKey, TValue>>
    IEnumerable<KeyValuePair<TKey, TValue>>
    IEnumerable
    Inherited Members
    object.Equals(object)
    object.Equals(object, object)
    object.GetHashCode()
    object.GetType()
    object.MemberwiseClone()
    object.ReferenceEquals(object, object)
    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

    LruDictionary(int)

    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
    int 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 MaxValue is allowed, but is less efficient than using J2N.Collections.Generic.Dictionary<TKey, TValue> or Dictionary<TKey, TValue> 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.

    LruDictionary(int, 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 IEqualityComparer<T>. See LUCENENET-602.
    Declaration
    public LruDictionary(int limit, IEqualityComparer<TKey> comparer)
    Parameters
    Type Name Description
    int 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 MaxValue is allowed, but is less efficient than using J2N.Collections.Generic.Dictionary<TKey, TValue> or Dictionary<TKey, TValue> 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.
    IEqualityComparer<TKey> comparer

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

    Properties

    Count

    Gets the number of elements contained in the ICollection<T>.

    Declaration
    public virtual int Count { get; }
    Property Value
    Type Description
    int

    The number of elements contained in the ICollection<T>.

    IsReadOnly

    Gets a value indicating whether the ICollection<T> is read-only.

    Declaration
    public virtual bool IsReadOnly { get; }
    Property Value
    Type Description
    bool

    true if the ICollection<T> is read-only; otherwise, false.

    this[TKey]

    Gets or sets the element with the specified key.

    Declaration
    public virtual TValue this[TKey key] { get; set; }
    Parameters
    Type Name Description
    TKey key

    The key of the element to get or set.

    Property Value
    Type Description
    TValue

    The element with the specified key.

    Exceptions
    Type Condition
    ArgumentNullException

    key is null.

    KeyNotFoundException

    The property is retrieved and key is not found.

    NotSupportedException

    The property is set and the IDictionary<TKey, TValue> is read-only.

    Keys

    Gets an ICollection<T> containing the keys of the IDictionary<TKey, TValue>.

    Declaration
    public virtual ICollection<TKey> Keys { get; }
    Property Value
    Type Description
    ICollection<TKey>

    An ICollection<T> containing the keys of the object that implements IDictionary<TKey, TValue>.

    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
    int

    Values

    Gets an ICollection<T> containing the values in the IDictionary<TKey, TValue>.

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

    An ICollection<T> containing the values in the object that implements IDictionary<TKey, TValue>.

    Methods

    Add(KeyValuePair<TKey, TValue>)

    Adds an item to the ICollection<T>.

    Declaration
    public virtual void Add(KeyValuePair<TKey, TValue> item)
    Parameters
    Type Name Description
    KeyValuePair<TKey, TValue> item

    The object to add to the ICollection<T>.

    Exceptions
    Type Condition
    NotSupportedException

    The ICollection<T> is read-only.

    Add(TKey, TValue)

    Adds an element with the provided key and value to the IDictionary<TKey, TValue>.

    Declaration
    public virtual void Add(TKey key, TValue value)
    Parameters
    Type Name Description
    TKey key

    The object to use as the key of the element to add.

    TValue value

    The object to use as the value of the element to add.

    Exceptions
    Type Condition
    ArgumentNullException

    key is null.

    ArgumentException

    An element with the same key already exists in the IDictionary<TKey, TValue>.

    NotSupportedException

    The IDictionary<TKey, TValue> is read-only.

    Clear()

    Removes all items from the ICollection<T>.

    Declaration
    public virtual void Clear()
    Exceptions
    Type Condition
    NotSupportedException

    The ICollection<T> is read-only.

    Contains(KeyValuePair<TKey, TValue>)

    Determines whether the ICollection<T> contains a specific value.

    Declaration
    public virtual bool Contains(KeyValuePair<TKey, TValue> item)
    Parameters
    Type Name Description
    KeyValuePair<TKey, TValue> item

    The object to locate in the ICollection<T>.

    Returns
    Type Description
    bool

    true if item is found in the ICollection<T>; otherwise, false.

    ContainsKey(TKey)

    Determines whether the IDictionary<TKey, TValue> contains an element with the specified key.

    Declaration
    public virtual bool ContainsKey(TKey key)
    Parameters
    Type Name Description
    TKey key

    The key to locate in the IDictionary<TKey, TValue>.

    Returns
    Type Description
    bool

    true if the IDictionary<TKey, TValue> contains an element with the key; otherwise, false.

    Exceptions
    Type Condition
    ArgumentNullException

    key is null.

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

    Copies the elements of the ICollection<T> to an Array, starting at a particular Array index.

    Declaration
    public virtual void CopyTo(KeyValuePair<TKey, TValue>[] array, int index)
    Parameters
    Type Name Description
    KeyValuePair<TKey, TValue>[] array

    The one-dimensional Array that is the destination of the elements copied from ICollection<T>. The Array must have zero-based indexing.

    int index
    Exceptions
    Type Condition
    ArgumentNullException

    array is null.

    ArgumentOutOfRangeException

    arrayIndex is less than 0.

    ArgumentException

    The number of elements in the source ICollection<T> is greater than the available space from arrayIndex to the end of the destination array.

    Get(TKey)

    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<TKey, TValue>. 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.

    Declaration
    public virtual TValue Get(TKey key)
    Parameters
    Type Name Description
    TKey key
    Returns
    Type Description
    TValue

    GetEnumerator()

    Returns an enumerator that iterates through the collection.

    Declaration
    public virtual IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator()
    Returns
    Type Description
    IEnumerator<KeyValuePair<TKey, TValue>>

    An enumerator that can be used to iterate through the collection.

    Put(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<TKey, TValue>. 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.

    Declaration
    public virtual TValue Put(TKey key, TValue value)
    Parameters
    Type Name Description
    TKey key
    TValue value
    Returns
    Type Description
    TValue

    Remove(KeyValuePair<TKey, TValue>)

    Removes the first occurrence of a specific object from the ICollection<T>.

    Declaration
    public virtual bool Remove(KeyValuePair<TKey, TValue> item)
    Parameters
    Type Name Description
    KeyValuePair<TKey, TValue> item

    The object to remove from the ICollection<T>.

    Returns
    Type Description
    bool

    true if item was successfully removed from the ICollection<T>; otherwise, false. This method also returns false if item is not found in the original ICollection<T>.

    Exceptions
    Type Condition
    NotSupportedException

    The ICollection<T> is read-only.

    Remove(TKey)

    Removes the element with the specified key from the IDictionary<TKey, TValue>.

    Declaration
    public virtual bool Remove(TKey key)
    Parameters
    Type Name Description
    TKey key

    The key of the element to remove.

    Returns
    Type Description
    bool

    true if the element is successfully removed; otherwise, false. This method also returns false if key was not found in the original IDictionary<TKey, TValue>.

    Exceptions
    Type Condition
    ArgumentNullException

    key is null.

    NotSupportedException

    The IDictionary<TKey, TValue> is read-only.

    TryGetValue(TKey, out TValue)

    Gets the value associated with the specified key.

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

    The key whose value to get.

    TValue value

    When this method returns, the value associated with the specified key, if the key is found; otherwise, the default value for the type of the value parameter. This parameter is passed uninitialized.

    Returns
    Type Description
    bool

    true if the object that implements IDictionary<TKey, TValue> contains an element with the specified key; otherwise, false.

    Exceptions
    Type Condition
    ArgumentNullException

    key is null.

    Implements

    IDictionary<TKey, TValue>
    ICollection<T>
    IEnumerable<T>
    IEnumerable
    Back to top Copyright © 2024 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.