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