Действительно ли возможно отсортировать HashTable?

Относительно вашего первого вопроса: вы можете создать родительский 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>
14
задан user81740 24 March 2009 в 13:29
поделиться

9 ответов

Другая опция состоит в том, чтобы создать хеш-таблицу, как Вы уже делаете и затем просто создаете отсортированный набор из ключей. Можно выполнить итерации через тот отсортированный набор ключей, выбрав соответствующее значение из хеш-таблицы по мере необходимости.

8
ответ дан 1 December 2019 в 07:06
поделиться

Хеш-таблицы работают путем отображения ключей к значениям. Неявный в этом отображении понятие, что ключи не отсортированы или сохранены в каком-то конкретном порядке.

Однако Вы могли смотреть на SortedDictionary<K,V>.

18
ответ дан 1 December 2019 в 07:06
поделиться

lubos является правильным: Вы не можете отсортировать HashTable. Если бы Вы могли, это не быть HashTable. Можно перечислить HashTable и затем отсортировать перечисление. Но это было бы очень медленно. Намного лучше использовать a SortedDictionary вместо этого.

6
ответ дан 1 December 2019 в 07:06
поделиться

Извините, но Вы не можете отсортировать хеш-таблицу. Необходимо будет осуществить рефакторинг код для использования некоторых поддающихся сортировке наборов.

3
ответ дан 1 December 2019 в 07:06
поделиться

Я совершенно уверен, что хеш-таблицы не могут быть отсортированы... ;)

Хеш-таблица Википедии

2
ответ дан 1 December 2019 в 07:06
поделиться

Необходимо будет возвратить что-то другое, чем хеш-таблица. Я не повторю то, что Вы утверждаете уже, что поняли, но необходимо заново обдумать, любая часть дизайна требует, чтобы Вы возвратили отсортированные объекты в хеш-таблице.

1
ответ дан 1 December 2019 в 07:06
поделиться

Не точно C# отвечает, но я уверен, что можно сделать что-то вроде него.

В Perl распространено "отсортировать" хеш-таблицу для использования в выводе к дисплею.

Например:

print "Items: ";
foreach (sort keys %items) {
    print $_, '=', $items{$_}, ' ';
}

Прием здесь - то, что Perl не сортирует хеш, он сортирует скопированный список ключей хеша. Должно быть достаточно легко в C# извлечь ключи хеша в список и затем вид тот список.

1
ответ дан 1 December 2019 в 07:06
поделиться

Нет никакого смысла в сортировке хеш-таблицы, потому что у Вас уже есть почти постоянное время поиска. Или в худшем случае O (B), где B является размером блока.

0
ответ дан 1 December 2019 в 07:06
поделиться

Конечно, хеш-таблицы могут быть отсортированы, но необходимо сначала определить то, что это означает сортировать хеш-таблицу. (Там находится проблема),

После того как Вы сделали это, однако, Вы неизменно удалили все преимущества, которые хеш-таблица может дать Вам, и Вы могли бы также использовать сортированный массив (с двоичным поиском) или использовать красно-черное дерево вместо этого.

0
ответ дан 1 December 2019 в 07:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: