Ho 60k elementi che devono essere controllati rispetto a un elenco di ricerca 20k. Esiste un oggetto di raccolta (ad esempio List
, HashTable
) che fornisce un metodo eccezionalmente veloce Contains()
? O dovrò scrivere il mio? In altre parole, è il metodo predefinito Contains()
solo scansionare ogni elemento o utilizza un algoritmo di ricerca migliore.Quale raccolta .NET fornisce la ricerca più veloce
foreach (Record item in LargeCollection)
{
if (LookupCollection.Contains(item.Key))
{
// Do something
}
}
Nota. L'elenco di ricerca è già ordinato.
Contiene per Elenco non funziona per l'elenco di oggetti perché sta confrontando i riferimenti. – Fiur
Dati ordinati? Ricerca binaria - vedi @ Risposta di Mark. –
HashtTable batte qualsiasi cosa fino a 2m elementi nella mia esperienza –