Как вы перемешаете элементы на карте, я ищу что-то похожее на метод Collections.shuffle
.
Как вы перемещаете элементы на карте
Ответ 1
A Map
на самом деле не упорядочен, как List
, что означает, что вы не можете получить доступ к элементам Map
по индексу. Следовательно, перетасовка вообще не имеет смысла. Но что вы можете сделать, так это (я пропустил generics для примера):
Map map = new HashMap();
// [...] fill the map
List keys = new ArrayList(map.keySet());
Collections.shuffle(keys);
for (Object o : keys) {
// Access keys/values in a random order
map.get(o);
}
Ответ 2
Нет смысла перетасовывать клавиши HashMap, так как HashMap не сохраняет в своих ключах никакого порядка (ни естественного, ни вставки). Вопрос имеет смысл, если мы говорим о LinkedHashMap, который поддерживает порядок вставки. В таком случае вы можете создать новую ссылку LinkedHashMap, имеющую случайно вставленные ключи.
Затем, предполагая, что карта - это исходная карта (LinkedHashMap), здесь код для создания новой карты (LinkedHashMap) с именем shuffleMap с перетасованными ключами.
List<Integer> list = new ArrayList<>(map.keySet());
Collections.shuffle(list);
Map<Integer, String> shuffleMap = new LinkedHashMap<>();
list.forEach(k->shuffleMap.put(k, map.get(k)));