2009-09-01 17 views
48

¿Hay alguna estructura de datos en C# que sea como un diccionario pero que solo tenga una clave y no tenga un valor? Básicamente quiero una lista de enteros que pueda buscar rápidamente y ver si hay un cierto valor en la lista. De acuerdo, para mi uso actual, una Lista no causaría ningún problema de rendimiento, pero parece que no encaja bien con la intención de lo que mi código está haciendo.C# Data Structure Like Dictionary pero sin un valor

Respuesta

73

Sí, se llama HashSet<T> y está disponible en la versión 3.5 del .NET framework. Si usa .NET versión 2.0, puede usar un diccionario y establecer valores en null.

+1

Tenga en cuenta que Hashset se introdujo en .NET Framework 3.5. Si está en una versión anterior, creo que usa un Dictionary y establece todos los valores en null. – codeape

+0

Otro enfoque en .NET 2.0 es usar 'KeyedCollection' y definir el método extractor de claves como identidad de valor. –

+0

más información sobre el uso de hashset: http://bit.ly/1FYcf –

0

o utilizar un SortedList donde los valores tienen que ser únicos

4

Si 3.5 no es una opción que podría hacer algo como Diccionario < int, int> y simplemente ignorar el valor. He hecho esto en 2.0 y tiendo a establecer el valor en la misma clave.

2

Si no tiene como objetivo .NET 3.5, Power Collections (código abierto) también proporciona una implementación de Conjunto.