Class LRUHashMap<TKey, TValue>
  
  LRUHashMap<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 LurchTable<TKey, TValue>.
Do note that every time an element is read from LRUHashMap<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. 
@lucene.experimental
 
  
  
    Inheritance
    System.Object
    LRUHashMap<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()
    
   
  
  Assembly: Lucene.Net.Facet.dll
  Syntax
  
    public class LRUHashMap<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
  
  
  LRUHashMap(Int32)
  Create a new hash map with a bounded size and with least recently
used entries removed.
 
  
  Declaration
  
    public LRUHashMap(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 HashMap<TKey, TValue> 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
  
  
  LRUHashMap(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 LRUHashMap(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 HashMap<TKey, TValue> 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 int Count { get; }
   
  Property Value
  
    
      
        | Type | 
        Description | 
      
    
    
      
        | System.Int32 | 
         | 
      
    
  
  
    |
    Improve this Doc
  
  
    View Source
  
  
  IsReadOnly
  
  
  Declaration
  
    public bool IsReadOnly { get; }
   
  Property Value
  
    
      
        | Type | 
        Description | 
      
    
    
      
        | System.Boolean | 
         | 
      
    
  
  
    |
    Improve this Doc
  
  
    View Source
  
  
  Item[TKey]
  
  
  Declaration
  
    public TValue this[TKey key] { get; set; }
   
  Parameters
  
    
      
        | Type | 
        Name | 
        Description | 
      
    
    
      
        | TKey | 
        key | 
         | 
      
    
  
  Property Value
  
  
    |
    Improve this Doc
  
  
    View Source
  
  
  Keys
  
  
  Declaration
  
    public ICollection<TKey> Keys { get; }
   
  Property Value
  
    
      
        | Type | 
        Description | 
      
    
    
      
        | System.Collections.Generic.ICollection<TKey> | 
         | 
      
    
  
  
    |
    Improve this Doc
  
  
    View Source
  
  
  Limit
  allows changing the map's maximal number of elements
which was defined at construction time.
Note that if the map 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 ICollection<TValue> Values { get; }
   
  Property Value
  
    
      
        | Type | 
        Description | 
      
    
    
      
        | System.Collections.Generic.ICollection<TValue> | 
         | 
      
    
  
  Methods
  
  
    |
    Improve this Doc
  
  
    View Source
  
  
  Add(TKey, TValue)
  
  
  Declaration
  
    public 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 void Add(KeyValuePair<TKey, TValue> item)
   
  Parameters
  
    
      
        | Type | 
        Name | 
        Description | 
      
    
    
      
        | System.Collections.Generic.KeyValuePair<TKey, TValue> | 
        item | 
         | 
      
    
  
  
    |
    Improve this Doc
  
  
    View Source
  
  
  Clear()
  
  
  Declaration
  
  
    |
    Improve this Doc
  
  
    View Source
  
  
  Contains(KeyValuePair<TKey, TValue>)
  
  
  Declaration
  
    public 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 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 void CopyTo(KeyValuePair<TKey, TValue>[] array, int arrayIndex)
   
  Parameters
  
    
      
        | Type | 
        Name | 
        Description | 
      
    
    
      
        | System.Collections.Generic.KeyValuePair<TKey, TValue>[] | 
        array | 
         | 
      
      
        | System.Int32 | 
        arrayIndex | 
         | 
      
    
  
  
    |
    Improve this Doc
  
  
    View Source
  
  
  Get(TKey)
  
  
  Declaration
  
    public TValue Get(TKey key)
   
  Parameters
  
    
      
        | Type | 
        Name | 
        Description | 
      
    
    
      
        | TKey | 
        key | 
         | 
      
    
  
  Returns
  
  
    |
    Improve this Doc
  
  
    View Source
  
  
  GetEnumerator()
  
  
  Declaration
  
    public 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 TValue Put(TKey key, TValue value)
   
  Parameters
  
    
      
        | Type | 
        Name | 
        Description | 
      
    
    
      
        | TKey | 
        key | 
         | 
      
      
        | TValue | 
        value | 
         | 
      
    
  
  Returns
  
  
    |
    Improve this Doc
  
  
    View Source
  
  
  Remove(TKey)
  
  
  Declaration
  
    public 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 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 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