Хеш-таблицы не имеют порядка вставок и хоть видимый порядок не случайный, рассчитывать на него при разработке ни в коем случае нельзя. Причина, по которой на разных компьютерах порядок одинаковый, в том, что хеш-функция одна.
К примеру, есть некая хеш-функция
foo()
, которая возвращает хеш в виде числа. Результаты этой функции могут быть следующими:
foo('1') = 123
foo('2') = 321
foo('3') = 12
foo('4') = 500
...
И ассоциативный массив
{'1' => a, '2' => b, '3' => c, '4' => d}
под капотом выглядит как
{12 => c, 123 => a, 321 => b, 500 => d}
.
И на всех компьютерах эти результаты будут всегда одни (условно), т.к. хеш-функция, определяющая этот результат, едина. Ну и порядок ключей зависит от этого численного результата и в примере выше он будет
3 1 2 4
, т.е. отсортировано по значению хеша.
См.
Хеш-таблица