如何洗牌地圖中的元素,我在尋找類似於Collections.shuffle
方法的東西。如何在地圖中洗牌元素
13
A
回答
31
A Map
並非真的像List
那樣排列,這意味着您無法通過索引訪問Map
項目。因此,洗牌總體上沒有意義。但是你可以做的是這樣的(我省略了例如仿製藥):
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);
}
4
沒有點在其鍵洗牌HashMap的鍵,因爲HashMap的不保留任何順序(既不自然也不插入) 。如果我們正在討論LinkedHashMap(它維護插入順序),那麼問題就很有意義。在這種情況下,您可以創建一個新的LinkedHashMap,並隨機插入密鑰。
然後,假設map是您的源映射(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)));
相關問題
- 1. 洗牌數組元素
- 2. 如何在Elm中洗牌?
- 3. 如何洗牌,使兩個相同的元素不在一起?
- 4. 如何洗牌對
- 5. 如何在python中洗牌問題
- 6. 如何在Java中洗牌FilteredList?
- 7. 如何在Java中洗牌甲板?
- 8. 在php中洗牌的圖像順序
- 9. 如何洗牌鍵值對?
- 10. 如何洗牌ImmutableJS列表
- 11. 當Fisher-Yates洗牌時Java堆棧中剩下的元素?
- 12. 在Java中洗牌一套
- 13. 試圖洗牌「甲板」類,似乎沒有洗牌
- 14. 如何在wp7中爲視圖製作洗牌動畫
- 15. 洗牌圖像周圍
- 16. jQuery的洗牌格圖像
- 17. 大HDF5數據集,如何在每個紀元後有效地洗牌
- 18. 洗牌在Objective-C
- 19. 如何從地圖中刪除元素
- 20. 如何克隆地圖中的元素
- 21. 確保JavaScript中的洗牌後的第一個元素是不一樣的,在以前的洗牌的最後一個元素
- 22. 如何在製作物品地圖時減少Spark的洗牌和時間?
- 23. 隨機洗牌相同元素的排序比較方法
- 24. 錯誤:洗牌需要用元素初始化
- 25. 張量流隨機洗牌隊列:元素不足
- 26. 用阿諾德的貓咪地圖進行圖像洗牌
- 27. SwiftyJSON洗牌
- 28. java:卡洗牌,
- 29. 火花洗牌
- 30. 洗牌註冊
HashMap不*保證*任何順序,但在我的實驗中,我發現檢索順序在許多(實際上,總是)執行中是相同的。這是不是很奇怪? – bikashg 2017-05-08 09:12:04
@bikashg試試這個:Map map = new HashMap <>(); map.put(4,「」); map.put(3,「」); map.forEach((k,v) - > System.out.println(k));插入的順序不能保證。 –
2017-08-11 22:44:30