2010-11-03 6 views
1

Это немного nitpicking, и я, возможно, пропустил что-то простоеЛучшая структура для поиска булевых индексов?

Иногда у меня есть целые числа, и я должен иметь возможность искать, являются ли они истинными или ложными. Я всегда решал это, используя словарь < int, bool >, вставляя true и просто используя ContainsKey, чтобы увидеть, что-то истинно (по умолчанию оно ложно).

Но это не похоже на элегантное решение вставить bool, который даже не используется :) Какую структуру вы порекомендовали бы для этого? производительность Lookup быть первичным и вставки вторичных (но важно)

Некоторые хорошо (LINQ) синтаксис с кучей индексов и возвращения предметов, которые не содержатся будет бонус

ответ

10

Используйте HashSet<int> провести «истинный "целые числа и используйте Contains для поиска коллекции. При таком подходе вы храните только нужные вам данные и получаете ту же O (1) производительность, которую вы сейчас получаете со словарем.

+0

Это звучит как хороший кандидат действительно – Homde

+0

Assusing все «ИНТ» имеет значение, и не является третьим состояние «неизвестно» –

1

Вы можете использовать aray ints.

Установить массив [position] = 1, если true или = 0 для false.

Поиск выполняется в O (1) и вставке у вас уже есть. Вы объявляете массив столько, сколько вам нужно.

Это не самое экономное решение. В .NET 2.0 у вас нет HashSet.

Или вариант номер два вы можете использовать BitArray

Смежные вопросы