Относительно вашего первого вопроса: вы можете создать родительский pom для всего вашего проекта. В этом родительском модуле вы можете добавить раздел dependencyManagement, где вы можете перечислить свои собственные модули с их версией. В ваших модулях вам нужно только указать зависимость без версии.
Вот пример:
в родительском pom:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>yourgroup</groupId>
<artifactId>yourmoduleA</artifactId>
<version>3.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>yourgroup</groupId>
<artifactId>yourmoduleB</artifactId>
<version>3.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</dependencyManagement>
, и если ваш модуль A использует модуль B, вы можете добавить в pom модуля A
<dependencies>
<dependency>
<groupId>yourgroup</groupId>
<artifactId>yourmoduleB</artifactId>
</dependency>
</dependencies>
Другая опция состоит в том, чтобы создать хеш-таблицу, как Вы уже делаете и затем просто создаете отсортированный набор из ключей. Можно выполнить итерации через тот отсортированный набор ключей, выбрав соответствующее значение из хеш-таблицы по мере необходимости.
Хеш-таблицы работают путем отображения ключей к значениям. Неявный в этом отображении понятие, что ключи не отсортированы или сохранены в каком-то конкретном порядке.
Однако Вы могли смотреть на SortedDictionary<K,V>
.
lubos является правильным: Вы не можете отсортировать HashTable. Если бы Вы могли, это не быть HashTable. Можно перечислить HashTable и затем отсортировать перечисление. Но это было бы очень медленно. Намного лучше использовать a SortedDictionary
вместо этого.
Извините, но Вы не можете отсортировать хеш-таблицу. Необходимо будет осуществить рефакторинг код для использования некоторых поддающихся сортировке наборов.
Я совершенно уверен, что хеш-таблицы не могут быть отсортированы... ;)
Необходимо будет возвратить что-то другое, чем хеш-таблица. Я не повторю то, что Вы утверждаете уже, что поняли, но необходимо заново обдумать, любая часть дизайна требует, чтобы Вы возвратили отсортированные объекты в хеш-таблице.
Не точно C# отвечает, но я уверен, что можно сделать что-то вроде него.
В Perl распространено "отсортировать" хеш-таблицу для использования в выводе к дисплею.
Например:
print "Items: ";
foreach (sort keys %items) {
print $_, '=', $items{$_}, ' ';
}
Прием здесь - то, что Perl не сортирует хеш, он сортирует скопированный список ключей хеша. Должно быть достаточно легко в C# извлечь ключи хеша в список и затем вид тот список.
Нет никакого смысла в сортировке хеш-таблицы, потому что у Вас уже есть почти постоянное время поиска. Или в худшем случае O (B), где B является размером блока.
Конечно, хеш-таблицы могут быть отсортированы, но необходимо сначала определить то, что это означает сортировать хеш-таблицу. (Там находится проблема),
После того как Вы сделали это, однако, Вы неизменно удалили все преимущества, которые хеш-таблица может дать Вам, и Вы могли бы также использовать сортированный массив (с двоичным поиском) или использовать красно-черное дерево вместо этого.