Jeśli trzeba odzyskać maksymalną wartość często myślisz o tworzeniu własnej listy klas (lub czerpać z listy), która utrzymuje maksymalną pozycję w pamięci podręcznej. Taka klasa może wyglądać następująco:
public class MaxList<T> : IList<T>, ICollection<T>, IEnumerable<T>
{
T Maximum { get; set; }
List<T> _list;
public T this[int index] { get; set; }
public void Add(T item)
{
if (item > this.Maximum)
{
this.Maximum = item;
}
_list.Add(item);
}
// ... IEnumerable<T>, ICollection<T> and IList<T> members
}
Alternatywnie, można wyprowadzić bezpośrednio z listy i zastąpić Dodaj i Usuń metod (w zasadzie wszystkie metody modyfikujące elementy listy) i zaktualizować cache odpowiednio.
Jeśli takie podejście jest tak naprawdę, świadczenie zależy od twojego scenariusza. Zdecydowanie jest, jeśli masz bardzo dużą listę z rzadko aktualizowaną i musisz często pobierać maksimum. W przeciwnym razie przejdź do rozwiązań już zasugerowanych, ponieważ są one znacznie prostsze.
Nieograniczony? To dużo liczb całkowitych. – Hardwareguy
Uważam, że to podchwytliwe pytanie. – Groo
@Groo - nie podchwytliwe pytanie. –