Как отключить сортировку 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
211 +2
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 Апр в 13:18
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 683 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир