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()
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
|
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
|
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
|
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