2017-03-16 14 views
-4

このインタフェースに含まれる「破壊的」メソッド、つまり操作対象のマップを変更するメソッドは、このマップが操作をサポートしていない場合UnsupportedOperationExceptionをスローするように指定されています。Javaの破壊的で非破壊的なメソッドとは何ですか?

+2

どのインターフェイスですか?どの地図ですか? – SilverNak

+0

変更可能で不変な操作は何ですか?同じように聞こえる – vikingsteve

+0

ありがとうシルバーナック、それはマップのインターフェイスです – Subbbu

答えて

1

簡単な説明は、破壊的な方法はオブジェクトの属性を変更する方法であるということです。非破壊的な方法では、オブジェクトの属性を変更することはありません。

あなたの場合、破壊的なことは、地図の内容が変更され、非破壊的であることは、内容を変更することなく目標を達成する方法であることを意味します。

別の例を挙げると、ArrayListオブジェクトlist1list2があり、両方の要素を同じリストに入れたいとします。

list1.addAll(list2); 

これは実行されますが、list1の要素数が変更されています。だからこれは破壊的なという形です。あなたはそれに多くの要素を追加することによってlist1を破壊しています。この場合

List<Type> list3 = new ArrayList<Type>(list1); 
list3.addAll(list2); 

、あなたはlist3と呼ばれる新しいリストを作成し、あなたのすべての要素を入れて、それを使用して同じバケツではなく、それらのいずれかを変更することなく、list1list2に要素を置くためにあなたの目標を満たすされていますこれは非破壊的なのやり方です。ここでは変更していないのでlist1はいつも同じです。

1

その他:質問はjava.util.Mapについてです。この文章はドキュメントにあります。


破壊的および非破壊的な方法は、一般的なJava用語ではなく、このインタフェースの範囲に含まれています。

引用符で示されているように、破壊的な方法は、put,clear、またはremoveのようなマップの内容を変更するものです。非破壊メソッドは、get,containsKey、またはcontainsValueのような読み取り操作のみを実行するメソッドです。

関連する問題