для второй записи idAndTags внутренняя карта перетасована, но не для первыхCollection.shuffle не работает над ключами карты или значениями карты. У меня есть карта внутри карты. Я хочу перетасовать карту, которая является самой внутренней:
ПЕРВЫЙ ПОДХОД!
for (Map.Entry<String, Map<String, String>> entryOne : idAndTags.entrySet()) {
List keys = new ArrayList(entryOne.getValue().keySet());
System.out.println(keys);
Collections.shuffle(keys);
System.out.println(keys);
}
ВТОРОЙ ПОДХОД!
for (Map.Entry<String, Map<String, String>> entryOne : idAndTags.entrySet()) {
shufTags = new HashMap<String, String>();
Map<String, String> tags = entryOne.getValue();
System.out.println(tags);
final List<String> vs = new ArrayList<String>(tags.values());
Collections.shuffle(vs);
final Iterator<String> vIter = vs.iterator();
for (String k : tags.keySet())
shufTags.put(k, vIter.next());
System.out.println(shufTags);
}
У «HashMap' есть ** нет порядка **. Никакое количество перетасовки и замены не убедит его иначе. –
означает ли это, что java сама решает, что перетасовать и что не в HashMap? Я спрашиваю об этом, потому что для idAndTags внутренняя карта второй записи перетасовывается, но не первая –
Заказ не определен. Любой заказ, который вы воспринимаете, является детальностью реализации. Существует даже никакой гарантии, что повторение дважды «Карты» приведет к тому, что _same_ order. –