JavaのLinkedHashMapをシャッフルする
JavaのLinkedHashMapをシャッフルする必要が出たが、意外に簡単ではなかった。
もっといい方法があると思うがとりあえずこれで動いたので、まずはよしとしよう。
private LinkedHashMap shuffle (LinkedHashMap linkedMap) { ArrayList list = new ArrayList(); for (Iterator it = linkedMap.entrySet().iterator(); it.hasNext();) { Map.Entry entry = (Map.Entry)it.next(); list.add(entry); } for (int b = 0; b < 3; b++) { for (int a = 0; a < list.size(); a++) { int spot = (int)(Math.random() * (list.size() - 1)); Object temp = list.get(spot); list.set(spot, list.get(a)); list.set(a, temp); } } LinkedHashMap newMap = new LinkedHashMap(); for(int i = 0; i < list.size(); i++){ Map.Entry entry = (Map.Entry)list.get(i); newMap.put(entry.getKey(), entry.getValue()); } return newMap; }