Какая идеальная структура данных в C #?
Подходящую структуру данных следует выбирать в первую очередь в зависимости от проблемы.Только тогда язык программирования, парадигма или структура классов могут повлиять на этот выбор.
При этом HashSet<int>
будет хорошо работать для этой задачи:
По крайней мере, в .NET 4 это реализация интерфейса ISet<T>
, который моделирует математические наборы .В отличие от мультимножеств (которые также называются сумки ), они содержат только отдельные элементы.Таким образом, если вы добавляете одно и то же значение дважды к одному и тому же HashSet<int>
, оно будет содержаться только один раз.
HashSet<T>
должно иметь хорошую производительность даже для больших наборов, поскольку оно реализовано в виде хэша-table (как следует из названия).
Тот факт, что наборы неупорядочены, не должен иметь значения, если вы собираетесь вставить значения в реляционную базу данных (где записи также неупорядочены).
Были бы B-деревья идеальными для моего случая, и если да, есть ли реализация B-деревьев в C #?
(Обратите внимание, что библиотека классов относится не к языку C #, а к платформе .NET!)
Я не знаю, почему вы специально упомянули B-деревья, но нет .NET BCL(библиотека базовых классов) не содержит реализацию B-деревьев.
Если вам нужно работать с постоянными структурами данных , то решение на основе дерева действительно может быть лучше, чем HashSet<T>
, который является изменяемым.