Java-从hashmap键创建置换
所以我有一个hashmap,它有键和对象。我想知道是否有可能用这些键创建一些排列。例如,如果我有: 1-反对意见1 2-反对意见2 3-反对3 4-反对4 得到一个随机顺序。因此,一个结果可能是: 3-反对3 1-反对意见1 2-反对意见2 4-反对4 到目前为止,我已经: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
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
有什么想法吗?
List<Integer> keys = new List<Integer>(mapPoints.keySet());
即使将键重新洗牌50次,这也会将相同的映射条目添加到另一个映射上50次,从而产生您已开始使用的映射,因为哈希映射是无序的。如何将映射强制转换为列表 Collections.shuffle((列出)映射点)
你想洗牌吗?对于HashMap,您无法预测返回键的顺序。因此,您最好在列表中获取键,然后进行洗牌。为什么在java.util.HashMap这样的关联集合中需要随机排列?
mapPoints
是Map接口的一个实现。您不能将其强制转换为列表界面!
mapPointsShuffle.putAll(mapPoints);