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;

    }