Подтвердить что ты не робот

Как вы перемещаете элементы на карте

Как вы перемешаете элементы на карте, я ищу что-то похожее на метод Collections.shuffle.

4b9b3361

Ответ 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)));