如何洗牌地图中的元素,我在寻找类似于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