2017-03-16 96 views

回答

1

一個簡單的解釋是破壞性方法是一種改變對象屬性的方法。您不會改變對象的屬性的非破壞性方法。

就你而言,破壞性意味着Map的內容將被修改,並且非破壞性將是一種在不修改內容的情況下實現目標的方法。

如果您舉另一個例子,假設您有ArrayList對象list1list2,並且您希望它們中的元素位於同一列表中。

list1.addAll(list2); 

這樣做,但你要改變list1中的元素數量。所以這是破壞性的的形式。你通過追加更多的元素來破壞list1

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

在這種情況下,你滿足你的目標擺在list1list2元素在同一個桶,但沒有通過創建一個名爲list3新的列表改變它們中的任何一個,並用它來把所有的元素在你的這是非破壞性的這樣做的方式,因爲你在這裏沒有改變list1,它始終保持不變。

1

對於其他人:問題是關於java.util.Map接口,這句話是在它的文檔中。


破壞性和非破壞性的方法不是一般的Java而言,它只是在此界面的範圍。

正如引用句子中所述,破壞性方法是修改映射內容的那些方法,例如put,clearremove。非破壞性方法是僅執行讀取操作的方法,如get,containsKeycontainsValue