Si vous avez besoin de récupérer la valeur maximale fréquemment, vous pourriez penser à créer votre propre classe de liste (ou dériver de List) qui conserve l'élément maximum dans un cache. Une telle classe pourrait ressembler à ceci:
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
}
Sinon, vous pouvez tirer de la liste directement et écraser Ajouter et supprimer des méthodes (essentiellement toutes les méthodes de modification des éléments de liste) et mettre à jour le cache en conséquence.
Si une telle approche est vraiment un avantage dépend de votre scénario. C'est certainement si vous avez une très grande liste avec est rarement mis à jour et vous devez récupérer le maximum fréquemment. Sinon, optez pour les solutions déjà proposées car elles sont beaucoup plus simples.
Illimité? C'est beaucoup d'entiers. – Hardwareguy
Je crois que c'est une question piège. – Groo
@Groo - pas une question piège. –