Просматривая документы для KeyedCollection
, я прочитал следующее:
Класс KeyedCollection обеспечивает как индексированное извлечение O (1), так и извлечение по ключу, приближающееся к O (1).
https://docs.microsoft.com/en-us/dotnet/api/system.collections.objectmodel.keyedcollection-2?view=netcore-3.1
Я не совсем понимаю, что это значит. Я лично думаю, что индексированный поиск и поиск по ключу - это одно и то же, поскольку словарь индексируется по ключам. Полагаю, я не совсем понимаю термины «индексированный поиск» и «поиск по ключу».
Так в чем разница и почему цвет лица отличается?
Дополнительная информация: я лично хотел бы использовать keyedCollection
, потому что у меня есть список, который будет добавлен ко многим. Время от времени мне нужно получить элемент по идентификатору - Guid
и вернуть некоторые данные. Я также периодически go просматриваю список и удаляю все элементы, которые больше не использую.
Sample;
/// <summary>
/// A collection of leases. Implements <see cref="KeyedCollection{TKey,TItem}"/> which is a dictionary-list hybrid.
/// </summary>
public class LeaseInfoCollection : KeyedCollection<Guid, LeaseInfo>
{
#region Construction and Destruction
/// <inheritdoc />
public LeaseInfoCollection()
{
}
/// <inheritdoc />
public LeaseInfoCollection(IEqualityComparer<Guid> comparer)
: base(comparer)
{
}
/// <inheritdoc />
public LeaseInfoCollection(IEqualityComparer<Guid> comparer, int dictionaryCreationThreshold)
: base(comparer, dictionaryCreationThreshold)
{
}
#endregion
#region Overrides of KeyedCollection<string,LeaseInfo>
/// <inheritdoc />
protected override Guid GetKeyForItem(LeaseInfo item)
{
return item.LeaseId;
}
#endregion
}