Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-从hashmap键创建置换_Java_Hash_Hashmap - Fatal编程技术网

Java-从hashmap键创建置换

Java-从hashmap键创建置换,java,hash,hashmap,Java,Hash,Hashmap,所以我有一个hashmap,它有键和对象。我想知道是否有可能用这些键创建一些排列。例如,如果我有: 1-反对意见1 2-反对意见2 3-反对3 4-反对4 得到一个随机顺序。因此,一个结果可能是: 3-反对3 1-反对意见1 2-反对意见2 4-反对4 到目前为止,我已经: Map<Integer, GeoPoint> mapPoints = new HashMap<Integer, GeoPoint>(); Map<Integer, GeoPoint> ma

所以我有一个hashmap,它有键和对象。我想知道是否有可能用这些键创建一些排列。例如,如果我有:

1-反对意见1 2-反对意见2 3-反对3 4-反对4

得到一个随机顺序。因此,一个结果可能是:

3-反对3 1-反对意见1 2-反对意见2 4-反对4

到目前为止,我已经:

Map<Integer, GeoPoint> mapPoints = new HashMap<Integer, GeoPoint>();
Map<Integer, GeoPoint> mapPointsShuffle = new HashMap<Integer, GeoPoint>();

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

        Collections.shuffle((List<?>) mapPoints);

        mapPointsShuffle.putAll(mapPoints);
    }
mapPoints=newhashmap();
Map mapPointsShuffle=新HashMap();
对于(int t=0;t<50;t++){
Collections.shuffle((列出)映射点);
mapPointsShuffle.putAll(mapPoints);
}
这个想法是给我50个随机排列。但它带来了:

09-26 11:15:27.813:E/AndroidRuntime(20434):java.lang.ClassCastException:java.util.HashMap无法转换为java.util.List


有什么想法吗?

没有实现java.util.List

您应该首先从HashMap键创建一个列表:

List<Integer> keys = new List<Integer>(mapPoints.keySet());

即使将键重新洗牌50次,这也会将相同的映射条目添加到另一个映射上50次,从而产生您已开始使用的映射,因为哈希映射是无序的。

如何将映射强制转换为列表

Collections.shuffle((列出)映射点)


你想洗牌吗?对于HashMap,您无法预测返回键的顺序。因此,您最好在列表中获取键,然后进行洗牌。

为什么在java.util.HashMap这样的关联集合中需要随机排列?
mapPoints
是Map接口的一个实现。您不能将其强制转换为列表界面!
mapPointsShuffle.putAll(mapPoints);