collect(Collectors.groupingBy())
возвращает новый Map
, который перезаписывает переменную на ваш предыдущий LinkedHashMap
. Поэтому ваше первоначальное назначение бесполезно. Точный возвращенный тип не определен спецификациями, но в моем тестовом прогоне он вернул HashMap
. (Никогда не думайте, что так будет всегда в разных версиях и брендах Java!)
Но главная проблема в том, что вы храните Integer
в качестве ключей. Если значения этих ключей меньше модуля таблицы внутри HashMap
, они будут казаться упорядоченными (потому что hashCode
из Integer
- это просто значение; значение s). Когда я тестировал с 1000 Integer
значениями 0..999, хеш-таблица (массив как часть внутренней обработки HashMap
), казалось, имела размер 2048. (Опять же, недокументированный, так что не принимайте это!)
В итоге причина, по которой вы видите результаты в порядке возрастания, связана с артефактом реализации, а не с конкретной причиной.