2016-07-31 3 views
0

Предположим, у меня есть LinkedHashMap<String, Double> myMap, который я добавил pair1, pair2, pair3 пары к.Выполняет ли сбор (значения) из LinkedHashMap порядок вставки?

А теперь я следующий цикл:

for (Double currDouble : myMap.getValues()) {...} 

ли первый Double объект в цикле будет один из pair1? И второе из pair2? Или это не должно быть?

Я проверил с помощью подобной программы, и кажется, что он сохраняет порядок вставки, но будет ли это так?

+4

Он сохраняет порядок вставки ** ключей ** (а не ** значений **). –

ответ

2

Да!

Из первого предложения документации LinkedHashMap: ... реализация интерфейса карты с предсказуемым порядком итерации .... обычно это порядок, в котором ключи были вставлены в карту (порядок вставки).

Если ключ повторно вставлен (возможно, с другим значением), он не изменяет первоначальный порядок.

2

По умолчанию LinkedHashMap сохраняет заказ на размещение. Хотя есть возможность переключиться на порядок доступа, который мог быть запутанным фактором.

Так, чтобы ответить на ваш вопрос, да , первый Double будет от pair1 и второго из pair2 и т.д. Учитывая тот факт, что вы не установили LinkedHashMap для доступа заказа.

Если вы все еще не уверены в поведении, вы всегда можете проверить его, добавив кучу данных в LinkedHashMap и перейдя по нему, как описано в вашем вопросе. Вы увидите, что он сохранит порядок вставки (или порядок доступа, если он установлен).