HashMap があり、イテレータを取得するたびにキーと値のペアを異なるランダムな順序で反復処理したいと考えています。概念的には、イテレータを呼び出す前にマップを「シャッフル」したいと思います (または、必要に応じてイテレータを「シャッフル」します)。
私が見る2つのオプションがあります:
1) LinkedHashMap のアプローチを使用し、エントリのリストを内部的に保持し、その場でシャッフルし、イテレータが呼び出されたときにそのビューを返します。
2) map.entrySet() を取得し、ArrayList を作成して、shuffle() を使用します。
2 つのアプローチは非常に似ているように見えますが、私は非常に大きな HashMap を期待しているので、メモリや計算を無駄にする立場にないので、詳細と内部に本当に関心があります。