問題タブ [unmodifiable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - マップの作成方法変更不可?
このjava.util.Collections
クラスを使用すると、コレクション インスタンスを変更不可にすることができます。以下の方法
umodifiableMap
を返すため、UnsupportedOperationException
はマップ インスタンスを変更しようとしたために発生します。
残念ながら、すべてのList<String>
子が変更不可能というわけではありません。それで、子の値に対しても変更不可能な動作を強制する方法があるかどうか知りたいList<String>
ですか?
もちろん、別の方法として、マップのキーと値のペアを反復処理し、リストを変更不可にして、マップを再構築することもできます。
java - クライアントでの反復中にサーバーで unmodifiableCollection が変更される
サーバーが既存の Collection の unmodifiableCollection をクライアントに与え、クライアントがそれを反復し始めるシナリオでは、同時にサーバー レベルで 1 つのスレッドが List を変更します。たとえば、その要素を削除します。これにより、クライアントに例外が発生しますか? はいの場合、それは何になりますか?リストの反復中に突然例外が発生した場合、クライアントにとって奇妙ではありませんか?
java - JavaのunmodifiableCollectionでこの点を説明する例はありますか?
私は読んでCore Java Volume I - fundamentals (9th edition) by Cay S. Horstmann and Gary Cornell
います。ここに、私が理解できない本の段落があります。それが何を意味するかを簡単な例で示すことができれば、それは素晴らしいことです. ありがとう
paragraph : undmodifiableCollection メソッドは、equal メソッドが基礎となるコレクションの equals メソッドを呼び出さないコレクションを返します。代わりに、オブジェクト クラスの equals メソッドを継承します。これは、オブジェクトが同一であるかどうかをテストするだけです。セットまたはリストを単なるコレクションにすると、内容が等しいかどうかをテストできなくなります。この階層レベルでは等価性テストが明確に定義されていないため、ビューはこのように動作します。ビューは、ハッシュ コード メソッドを同じように扱います。ただし、unmodifiableSet および unmodifiableList メソッドは、基礎となるコレクションの equals および hashCode メソッドを使用します。
java - Collections クラスの変更不可能なメソッドが、新しい要素でコレクションを作成しないのはなぜですか?
次のコードがあるとします。
それは印刷します
2 行目を次のように変更する場合
期待どおりに動作します。問題は、UnmodifiableList
コレクションの内部クラス (および他のすべての変更不可能なクラス) が元のリストの新しいコピーを作成しないのはなぜArrayList
ですか?
編集:コードの機能を理解しています。私の質問は、なぜこのように実装されたのですか? 基になる配列の新しいコピーを作成する際に、UnmodifiableList (コレクションの内部クラス) のコンストラクターが ArrayList のコンストラクターのように動作するのはなぜですか? 変更可能なコレクション (ArrayList) はコンテンツ全体をコピーするのに、変更不可能なコレクションはコピーしないのはなぜですか?
java - TreeMap の変更不可能なビューはキーの順序を保持しますか?
があるとしTreeMap<Long,Long> map
ます。ゲッターから変更不可能なバージョンを表示する必要があるため、Map<Long,Long>
ofを返しreturn Collections.unmodifiableMap(map);
ます。
ただし、 のときと同じキーの順序で返される必要がありますTreeMap<Long,Long>
。Map
から作成されたときに、この変更不可能なキーの順序が同じになることをすべての場合に保証できますTreeMap
か?
java - Javaで変更不可能なリストを元に戻す方法
変更不可能なリストを元に戻そうとしています。しかし、私はそれを達成しようとしましたが、変更不可能なリストを更新または逆にすることは可能ですか? Google Immutable List でそれができることはわかっています
上記のプログラムでは、変更不可能なリストを後ろからトラバースし、それらを配列に入れ、その配列を新しい変更不可能なリストに追加しています。最適化の観点から、より良い方法でそれを行うことはできますか?