5

Colelction.unmodifiableMap は反復順序を保護しますか?

私は newMap.put(key,Collections.ModifiableMap(oldMap)) を試していました 次に、newMap.get(key) を実行して反復すると、反復順序が変わるようです。

反復順序をどのように保護できますか?

4

3 に答える 3

5

UnmodifiableMap は、書き込みメソッドを除くすべてのメソッドを単純に委任します。その順序はまさにデリゲートの順序です。

最初のコレクションと同じ順序にする必要がある場合は、LinkedHashMap を使用します。

于 2011-03-04T01:06:30.780 に答える
4

Collections.unmodifiableSortedMapを確認してください。これにより、マップ上に読み取り専用ビューが提供され、キーの並べ替え順序が維持されます。

于 2011-03-04T03:16:29.797 に答える
1

Collections.unmodifiableMapのソースを見ると、 UnmodifiableMap クラスに渡され、ラップされているだけであることがわかります。したがって、基になるマップの順序は変更されません。

そして、そのドキュメントによると、次のunmodifiableMapように述べています。

指定されたマップの変更不可能なビューを返します。

ビューを返すと表示されているので、別のマップを取得するのではなく、古いマップにアクセスする方法が異なるだけであることを意味しています。

于 2011-03-04T03:22:44.820 に答える