1

だから私はキーとオブジェクトを持つハッシュマップを持っています。キーを使用して多数の順列を作成できるかどうか疑問に思っていました。たとえば、私が持っていた場合:

1 - オブジェクト 1 2 - オブジェクト 2 3 - オブジェクト 3 4 - オブジェクト 4

ランダムな順序を取得します。したがって、1 つの結果は次のようになります。

3 - オブジェクト 3 1 - オブジェクト 1 2 - オブジェクト 2 4 - オブジェクト 4

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

Map<Integer, GeoPoint> mapPoints = new HashMap<Integer, GeoPoint>();
Map<Integer, GeoPoint> mapPointsShuffle = new HashMap<Integer, GeoPoint>();

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

        Collections.shuffle((List<?>) mapPoints);

        mapPointsShuffle.putAll(mapPoints);
    }

だからアイデアは私に50のランダムな順列を与えることです. しかし、それは戻ってきます:

09-26 11:15:27.813: E/AndroidRuntime(20434): java.lang.ClassCastException: java.util.HashMap を java.util.List にキャストできません

何か案は?

4

3 に答える 3

1

最初にハッシュマップキーからリストを作成する必要があります。

List<Integer> keys = new List<Integer>(mapPoints.keySet());

Collections次に、投稿が示す方法でメソッドを使用してキーリストをシャッフルできます。

ただし、ループの最後の呼び出しは意味がありません。

mapPointsShuffle.putAll(mapPoints);

キーを50回再シャッフルした場合でも、同じマップエントリが50回以上別のマップに追加され、ハッシュマップは順序付けされていないため、開始したマップになります。

于 2012-09-26T10:35:53.117 に答える
1

java.util.HashMapはjava.util.Listを実装していません

于 2012-09-26T10:31:18.733 に答える
0

マップをリストにキャストするにはどうすればよいですか?

Collections.shuffle((List)mapPoints);

キーをシャッフルしようとしていますか?HashMapの場合、キーが返される順序を予測することはできません。したがって、リスト内のキーを取得してからシャッフルする方がよいでしょう。

于 2012-09-26T10:36:45.110 に答える