14 Stimmen

Wie werden die Elemente in einer Map gemischt?

Wie mischt man Elemente in einer Map, ich suche nach etwas ähnlichem wie die Collections.shuffle Methode.

36voto

Lukas Eder Punkte 194234

A Map ist nicht wirklich geordnet wie ein List was bedeutet, dass Sie keinen Zugriff auf Map Artikel nach Index. Daher macht das Mischen im Allgemeinen keinen Sinn. Aber was Sie tun könnten, ist dies (ich habe für das Beispiel Generika weggelassen):

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);
}

7voto

Enrico Giurin Punkte 1875

Es macht keinen Sinn, die Schlüssel der HashMap zu mischen, da die HashMap keine Reihenfolge (weder natürlich noch einfügen) in ihren Schlüsseln beibehält. Die Frage macht Sinn, wenn es sich um eine LinkedHashMap handelt, die die Einfügereihenfolge beibehält. In einem solchen Fall können Sie eine neue LinkedHashMap erstellen, bei der die Schlüssel zufällig eingefügt werden.

Dann, vorausgesetzt, dass die Karte Ihre Quellkarte (LinkedHashMap) ist, hier der Code, um eine neue Karte (LinkedHashMap) mit dem Namen shuffleMap zu erzeugen, wobei die Schlüssel gemischt werden.

    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)));

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X