Se è necessario recuperare il valore massimo frequentemente si potrebbe pensare di creare la propria classe di lista (o derivare da Elenco) che mantiene l'elemento massimo in una cache. Tale classe potrebbe assomigliare a questo:
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
}
In alternativa, si potrebbe derivare da List direttamente e sovrascrivere l'Add e Remove metodi (praticamente tutti i metodi che modificano gli elementi della lista) e aggiornare la cache di conseguenza.
Se un tale approccio è davvero un vantaggio dipende dal proprio scenario. Sicuramente è che se si dispone di un elenco molto grande con è raramente aggiornato e è necessario recuperare il massimo frequentemente. Altrimenti vai per le soluzioni già suggerite perché sono molto più semplici.
fonte
2009-06-23 18:48:46
Illimitato? Sono molti interi. – Hardwareguy
Credo che questa sia una domanda trabocchetto. – Groo
@Groo - non una domanda trabocchetto. –