このインタフェースに含まれる「破壊的」メソッド、つまり操作対象のマップを変更するメソッドは、このマップが操作をサポートしていない場合UnsupportedOperationExceptionをスローするように指定されています。Javaの破壊的で非破壊的なメソッドとは何ですか?
-4
A
答えて
1
簡単な説明は、破壊的な方法はオブジェクトの属性を変更する方法であるということです。非破壊的な方法では、オブジェクトの属性を変更することはありません。
あなたの場合、破壊的なことは、地図の内容が変更され、非破壊的であることは、内容を変更することなく目標を達成する方法であることを意味します。
別の例を挙げると、ArrayListオブジェクトlist1
とlist2
があり、両方の要素を同じリストに入れたいとします。
list1.addAll(list2);
これは実行されますが、list1
の要素数が変更されています。だからこれは破壊的なという形です。あなたはそれに多くの要素を追加することによってlist1
を破壊しています。この場合
List<Type> list3 = new ArrayList<Type>(list1);
list3.addAll(list2);
、あなたはlist3
と呼ばれる新しいリストを作成し、あなたのすべての要素を入れて、それを使用して同じバケツではなく、それらのいずれかを変更することなく、list1
とlist2
に要素を置くためにあなたの目標を満たすされていますこれは非破壊的なのやり方です。ここでは変更していないのでlist1
はいつも同じです。
1
その他:質問はjava.util.Map
についてです。この文章はドキュメントにあります。
破壊的および非破壊的な方法は、一般的なJava用語ではなく、このインタフェースの範囲に含まれています。
引用符で示されているように、破壊的な方法は、put
,clear
、またはremove
のようなマップの内容を変更するものです。非破壊メソッドは、get
,containsKey
、またはcontainsValue
のような読み取り操作のみを実行するメソッドです。
関連する問題
- 1. angularfire2:破壊的な更新(set())と非破壊的な更新(update())の違い
- 2. Javascriptの破壊的方法と非破壊的方法の命名規則
- 3. なぜListAppendは破壊的ではなく、ArrayAppendとStructInsertは両方とも破壊的ですか?
- 4. 破壊的なGitコミット?
- 5. 破壊的なスタック反復
- 6. どのようにコンポーネントの破壊的なFormControlを破壊するか?
- 7. 「破壊的」jQueryシャッフル問題
- 8. プログラムで非破壊的なブリーダーを追加する
- 9. Spring Controller破壊メソッド?
- 10. 既存のプロジェクトの破壊的なチームシェア
- 11. Pycharmのキーボードショートカットボックスの破壊的な
- 12. OCamlの破壊的な置換誤り
- 13. 決定的な破壊に頼って、復帰時の破壊を避ける
- 14. 実装Knockout.js破壊的なforeachループ
- 15. Eclipse - 破壊的なカスタムチェックアウトプロジェクト名/フォルダ
- 16. 非破壊空間のZlib
- 17. クリスタル - クラス破壊のメソッド
- 18. ハッシュからキーを削除する非破壊的方法
- 19. オブジェクトな破壊とすぐ
- 20. 一時的に破壊されるのはいつですか?
- 21. DictReaderでの反復は破壊的です
- 22. Cで自己破壊的なプログラムを書くことは可能ですか?
- 23. 一般的な破壊操作でのセッションの問題
- 24. バックボーン破壊エラー
- 25. 破壊的なAPIとの競合を見つける
- 26. C:配列へのポインタと破壊的な並べ替え
- 27. angular2でプログラム的に "self"コンポーネントを破壊する方法は?
- 28. thread_localオブジェクトの破壊
- 29. Unity3Dのインスタンシエーションと破壊
- 30. data.frameをインプレースで(破壊的に)変更することは可能ですか?
どのインターフェイスですか?どの地図ですか? – SilverNak
変更可能で不変な操作は何ですか?同じように聞こえる – vikingsteve
ありがとうシルバーナック、それはマップのインターフェイスです – Subbbu