Как отключить сортировку 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 Нужно сделать так, чтобы они шли в порядке добавления.
В 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 в том же порядке, используя данный список ключей.
В 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 в том же порядке, используя данный список ключей.