該接口中包含的「破壞性」方法,即修改它們在其上操作的地圖的方法被指定爲拋出UnsupportedOperationException(如果此地圖不支持該操作)。什麼是java中的破壞性和非破壞性方法?
-4
A
回答
1
一個簡單的解釋是破壞性方法是一種改變對象屬性的方法。您不會改變對象的屬性的非破壞性方法。
就你而言,破壞性意味着Map的內容將被修改,並且非破壞性將是一種在不修改內容的情況下實現目標的方法。
如果您舉另一個例子,假設您有ArrayList對象list1
和list2
,並且您希望它們中的元素位於同一列表中。
list1.addAll(list2);
這樣做,但你要改變list1
中的元素數量。所以這是破壞性的的形式。你通過追加更多的元素來破壞list1
。
List<Type> list3 = new ArrayList<Type>(list1);
list3.addAll(list2);
在這種情況下,你滿足你的目標擺在list1
和list2
元素在同一個桶,但沒有通過創建一個名爲list3
新的列表改變它們中的任何一個,並用它來把所有的元素在你的這是非破壞性的這樣做的方式,因爲你在這裏沒有改變list1
,它始終保持不變。
1
對於其他人:問題是關於java.util.Map
接口,這句話是在它的文檔中。
破壞性和非破壞性的方法不是一般的Java而言,它只是在此界面的範圍。
正如引用句子中所述,破壞性方法是修改映射內容的那些方法,例如put
,clear
或remove
。非破壞性方法是僅執行讀取操作的方法,如get
,containsKey
或containsValue
。
相關問題
- 1. 爲什麼ListAppend是非破壞性的,而ArrayAppend和StructInsert都具有破壞性?
- 2. 歸併 - 破壞性與非破壞性Java中
- 3. 非破壞性spl_autoload_register
- 4. Javascript中破壞性與非破壞性方法的命名約定
- 5. npm非破壞性更新
- 6. 什麼是破壞性更新?
- 7. 是CALayer insertSublayer:atindex:破壞性的?
- 8. Cookie破壞會話破壞,爲什麼?
- 9. 什麼是非破壞性的替代方法存在於類向量中c
- 10. Ruby中的非破壞性拆分
- 11. lisp中的非破壞性排序?
- 12. OpenGL中的非破壞性濾鏡
- 13. 什麼是lisp的非破壞性版本?
- 14. Java - 防止破壞方法
- 15. 單元測試破壞性方法
- 16. java2d對象的非破壞性轉換
- 17. 非破壞性的全屏mobclix廣告
- 18. 破壞不破壞
- 19. 破壞不破壞
- 20. 從散列中刪除密鑰的非破壞性方法
- 21. 破壞性的方法和爆炸方法在Ruby中
- 22. 非破壞性原子添加?
- 23. PHP - 非破壞性輸入消毒
- 24. AutoMapper非破壞性列表覈對?
- 25. 破壞性的Git提交?
- 26. 的Java性能的填充破壞
- 27. Java Path.startswith()破壞?
- 28. 什麼是非破壞性地向矢量附加值的慣用方式?
- 29. 破壞黑莓持久性
- 30. Rails:對象破壞性能
什麼接口?哪張地圖? – SilverNak
你知道可變和不可變操作是什麼嗎?聽起來類似 – vikingsteve
謝謝SilverNak,那是Map接口 – Subbbu