在HashMap中混洗值

the*_*tna 2 java collections shuffle

我想在HashMap中随机播放值.我有以下类型的HashMap

Map<Integer,ArrayList<String> > trainDataSet = new HashMap<Integer, ArrayList<String>>();
Run Code Online (Sandbox Code Playgroud)

我想在地图中改变值.我该怎么办?

以下是我的尝试:

    collections.shuffle(trainDataSet.values());
Run Code Online (Sandbox Code Playgroud)

出了错误:

    Values cannot be cast to java.util.List
Run Code Online (Sandbox Code Playgroud)

是的,这是有道理的,因为我的值是在Arraylist而不是List中.是否有可能改组arraylist集合?

编辑

如果我有以下订单::

key1  [aa,bb,cd]
key2  [xx,xy,sfr]
Run Code Online (Sandbox Code Playgroud)

变成类似的东西

key1  [xx,xy,sfr]
key2  [aa,bb,cd]
Run Code Online (Sandbox Code Playgroud)

Mar*_*nik 12

您实际上想要随机重新关联键和值.这是一个如何实现的例子:

final Map<String, Object> x = new HashMap<String, Object>();
x.put("x", 1); x.put("y", 2); x.put("z", 3); x.put("w", 4);
System.out.println(x);
final List<Object> vs = new ArrayList<Object>(x.values());
Collections.shuffle(vs);
System.out.println(vs);
final Iterator<Object> vIter = vs.iterator();
for (String k : x.keySet()) x.put(k, vIter.next());
System.out.println(x);
Run Code Online (Sandbox Code Playgroud)