2009-09-01 12 views
48

C'è una struttura dati in C# che è come un dizionario ma che ha solo una chiave e non ha un valore. Fondamentalmente voglio una lista di interi che posso velocemente cercare e vedere se un certo valore è nella lista. Certo, per il mio uso corrente, un elenco non causerebbe alcun problema di prestazioni, ma non sembra adattarsi bene all'intento di ciò che sta facendo il mio codice.Struttura dati C# come un dizionario ma senza valore

risposta

73

Sì, si chiama HashSet<T> e disponibile nella versione 3.5 del framework .NET. Se si utilizza .NET versione 2.0, è possibile utilizzare un dizionario e impostare i valori su null.

+1

Si noti che Hashset è stato introdotto in .NET Framework 3.5. Se sei su una versione precedente, suppongo che usi un dizionario e imposti tutti i valori su null. – codeape

+0

Un altro approccio in .NET 2.0 consiste nell'utilizzare 'KeyedCollection' e definire il metodo key extractor come valore identity. –

+0

maggiori informazioni sull'utilizzo di hashset: http://bit.ly/1FYcf –

0

o utilizzare un SortedList in cui i valori devono essere univoci

4

Se 3.5 non è un'opzione che si potrebbe fare qualcosa di simile Dizionario < int, int> e semplicemente ignorare il valore. ho fatto questo in 2.0 e tendo ad impostare il valore allo stesso come la chiave.

2

Se non si utilizza .NET 3.5, Power Collections (open source) fornisce anche un'implementazione Set.

Problemi correlati