Не существует фабричного метода, подобного LinkedHashMap::of
, и у Map
нет порядка как такового, поэтому я вижу только один способ - построить LinkedHashMap
, если он вам действительно нужен.
Кстати от сам JEP :
Статические фабричные методы для конкретных классов сбора (например, ArrayList, HashSet) были удалены из этого предложения ...
Существует еще одна проблема: статические методы классов наследуются подклассами. Предположим, что был добавлен статический фабричный метод HashMap.of (). Поскольку LinkedHashMap является подклассом HashMap, код приложения может вызвать LinkedHashMap.of (). В конечном итоге это вызовет HashMap.of (), совсем не то, что можно было бы ожидать!
Дело в том, что static
методы наследуются, но не могут быть переопределены, поэтому, если бы такой метод был добавлен к HashMap
, он не мог бы быть переопределен в LinkedHashMap
.
Если вы можете использовать guava
, вы можете использовать ImmutableMap
, который задокументирован как:
Неизменяемая карта на основе хеш-функции с надежным заданным пользователем порядком итераций ...