Как отключить сортировку HashTable в Vala? При добавлении в hashtable элементов в одном порядке, они встают в другом порядке.
Например:var map = HashTable(str_hash, str_equal);
for(int i = 0; i {
stdout.printf("%s\n", key);
});
Вывод
5
4
1
2
3
Нужно сделать так, чтобы они шли в порядке добавления.

21 Авг 2019 в 06:27
255 +1
0
Ответы
1

В Vala HashTable не гарантирует порядок элементов при их обходе. Если вам необходимо сохранить порядок добавления элементов, вы можете использовать ArrayList для хранения ключей в порядке их добавления. Вот пример кода:

void main() {
HashTable<string, string> map = new HashTable<string, string>(str_hash, str_equal);
ArrayList<string> keys = new ArrayList<string>();
for (int i = 0; i < 5; i++) {
string key = i.to_string();
map.insert(key, "word " + i.to_string());
keys.append(key);
}
foreach (string key in keys) {
string value = map.lookup(key);
stdout.printf("%s\n", key);
}
}

Таким образом, ключи будут сохраняться в ArrayList в порядке их добавления, и вы сможете обходить HashTable в том же порядке, используя данный список ключей.

20 Апр 2024 в 13:18
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир