Почему и на что можно рассчитывать?
Любой хеш будет иметь "естественную сортировку".
«Естественная сортировка» поддерживается либо при вставке каждого элемента, либо перед первым поиском.
Если нет естественной сортировки, возвращающей значение, соответствующее определенному ключу, потребуется исчерпывающий поиск.
Разумеется, для исчерпывающего поиска потребовалось бы n сравнений, где n - количество элементов в хэше (например, 65536 элементов, найденных в 65536 сравнениях).
С другой стороны, если хеш отсортирован в алфавитном порядке по KEY, то двоичный поиск может найти совпадение в сравнении LOG2 (n). (например, 65536 элементов, найденных в 16 сравнениях.)
Существуют и другие методы сортировки, но все они требуют некоторой начальной сортировки. Такой сортировкой может быть система со скрытым индексом, в которой элементы пары ключ / значение не отсортированы.
например. В следующей частичной реализации пары ключ / значение сохраняются как объекты в базовом массиве.
myArray[0] = {"b", "Skies"}
myArray[1] = {"c", "dog"}
myArray[2] = {"a", "Jax"}
myArray[3] = {"d", "gone"}
myArray[4] = {"r", "run"}
myArray[5] = {"q", "quit"}
второй массив, к которому разработчик Ruby не имеет доступа , содержит сортировку.
sortArray[0] = 2
sortArray[1] = 0
sortArray[2] = 1
sortArray[3] = 3
sortArray[4] = 4
sortArray[5] = 5
Таким образом, внутренне к хеш-объекту
for(i=0 to 5)
print myArray[sortArray[i]]
напечатает отсортированный массив.
Спецификация Ruby явно не указывает, какой метод использовать, сортировку по ключу, скрытую сортировку или какой-либо другой метод, поэтому нет, вы не можете рассчитывать на естественную сортировку.