【问题标题】:Java HashMap permutations [closed]Java HashMap 排列[关闭]
【发布时间】:2012-09-18 01:42:48
【问题描述】:

我正在尝试创建一个哈希映射的排列,该映射对键进行键控并以随机顺序多次对其进行洗牌,但保留相同的对象。

到目前为止我有:

Map<Integer, GeoPoint> mapPoints = new HashMap<Integer, GeoPoint>();
ArrayList<Integer> keys2 = new ArrayList<Integer>(mapPoints.keySet());

for (int t =0; t < 50; t ++){

            Collections.shuffle(keys2);

        }

但据我所知,它并没有洗牌。谁能看到我做错了什么。

【问题讨论】:

  • 你最终想要达到什么目标? HashMap 没有排序,所以洗牌没有什么意义
  • 您应该完善您之前的问题,而不是根据其中一个答案创建一个新问题。

标签: java hash hashmap


【解决方案1】:

在您看来,“洗牌”是什么样的? HashMap 中的键没有顺序。您需要 LinkedHashMap 来保留广告订单。

洗牌Collection 的键不会影响Map 本身;您遍历它以访问 Map 键。

在你运行它之后看看这是否会给你一个不同的顺序。

Map<Integer, GeoPoint> mapPoints = new HashMap<Integer, GeoPoint>();
System.out.println("before shuffle ");
Set<Integer> keys = mapPoints.keySet();
for (int key : keys) {
    System.out.println("key : " + key + " value: " + mapPoints.get(key));
}
Collections.shuffle(keys);  // don't know why multiple shuffles are required.  deck of cards?
System.out.println("after shuffle ");
for (int key : keys) {
    System.out.println("key : " + key + " value: " + mapPoints.get(key));
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 2020-04-27
    相关资源
    最近更新 更多