Tengo 60k elementos que deben verificarse en una lista de búsqueda de 20k. ¿Existe un objeto de recopilación (como List
, HashTable
) que proporcione un método excepcionalmente rápido Contains()
? ¿O tendré que escribir el mío? En otras palabras, el método predeterminado Contains()
es escanear cada elemento o utiliza un mejor algoritmo de búsqueda.Qué colección .NET proporciona la búsqueda más rápida
foreach (Record item in LargeCollection)
{
if (LookupCollection.Contains(item.Key))
{
// Do something
}
}
Nota. La lista de búsqueda ya está ordenada.
Contiene para Lista no funciona para la lista de objetos porque está comparando referencias. – Fiur
¿Datos ordenados? Búsqueda binaria: ver la respuesta de @ Mark. –
HashtTable supera cualquier elemento de hasta 2m en mi experiencia –