-4

キーをキーイングし、ランダムな順序で複数回シャッフルするが、同じオブジェクトを保持するハッシュマップの順列を作成しようとしています。

これまでのところ私は持っています:

Map<Integer, GeoPoint> mapPoints = new HashMap<Integer, GeoPoint>();
ArrayList<Integer> keys2 = new ArrayList<Integer>(mapPoints.keySet());

for (int t =0; t < 50; t ++){

            Collections.shuffle(keys2);

        }

しかし、私が集めることができるものから、それはそれらをシャッフルしていません。誰かが私が間違っていることを見ることができますか?

4

1 に答える 1

2

あなたにとって「シャッフル」はどのように見えますか?にキーの順序はありませんHashMapLinkedHashMap広告掲載順を保持するには が必要です。

キーのシャッフルは、それ自体Collectionには影響しません。Mapキーにアクセスするためにそれを反復処理しMapます。

実行後、これにより異なる順序が得られるかどうかを確認してください。

Map<Integer, GeoPoint> mapPoints = new HashMap<Integer, GeoPoint>();
System.out.println("before shuffle ");
Set<Integer> keys = mapPoints.keySet();
for (int key : keys) {
    System.out.println("key : " + key + " value: " + mapPoints.get(key));
}
Collections.shuffle(keys);  // don't know why multiple shuffles are required.  deck of cards?
System.out.println("after shuffle ");
for (int key : keys) {
    System.out.println("key : " + key + " value: " + mapPoints.get(key));
}
于 2012-09-26T12:22:45.850 に答える