LinkedList
LinkedListNode<T>
) содержит:
Value
— само значениеNext
— ссылка на следующий элементPrevious
— ссылка на предыдущий элементLinkedList<string> list = new LinkedList<string>();
list.AddLast("first");
list.AddLast("second");
// Эффективное удаление элемента
LinkedListNode<string> node = list.Find("first");
list.Remove(node); // Быстрее, чем List<T>.Remove()
AddFirst
, AddLast
)AddBefore
, AddAfter
)Нет индексированного доступа:
[]
Больший расход памяти:
Неэффективность для поиска:
Частые вставки/удаления в середине:
Когда важен порядок элементов:
Большие коллекции с частыми изменениями
public class LRUCache<TKey, TValue>
{
private readonly LinkedList<KeyValuePair<TKey, TValue>> _list = new();
private readonly Dictionary<TKey, LinkedListNode<KeyValuePair<TKey, TValue>>> _dict = new();
public void Add(TKey key, TValue value)
{
if (_dict.TryGetValue(key, out var node))
{
_list.Remove(node);
}
var newNode = _list.AddFirst(new KeyValuePair<TKey, TValue>(key, value));
_dict[key] = newNode;
}
}
Операция | LinkedList
LinkedList<T>
— это специализированная коллекция для сценариев с частыми вставками/удалениями, где не требуется индексированный доступ. Ее следует выбирать осознанно, учитывая конкретные требования к производительности.