Map
- интерфейс. Поэтому, если вы запрашиваете Map
в качестве аргумента или параметра, вы запрашиваете только эти гарантии.
Если вы требуете дополнительных гарантий (например, что LinkedHashMap сохраняет порядок вставки), вам лучше запросить это явно.
Поскольку вы говорите "backend" и "frontend", существует также вопрос о транспорте между ними. Если вы используете транспорты (а не прямые вызовы), которые не могут поддерживать порядок на картах (например, JSON), тогда вам лучше не полагаться на разные типы данных. Например, используйте вместо этого список кортежей ключ-значение.
Боковое примечание о значениях по умолчанию
Groovy имеет литерал для быстрого создания карт ([:]
или формы с ключами типа [a: 42]
). Эти карты имеют вид LinkedHashMap
, как вы заявили.
groovy:000> [:].getClass()
===> class java.util.LinkedHashMap
Поскольку Java до 15 не имеет буквального значения для карт, нет «по умолчанию» - по умолчанию это то, что вы делаете.
В общем, лучше всегда думать о типе данных, который вам действительно нужен. Это также означает, что литерал карты Groovy может быть неправильным выбором .