什么是java中的破坏性和非破坏性方法?
问题描述:
该接口中包含的“破坏性”方法,即修改它们在其上操作的地图的方法被指定为抛出UnsupportedOperationException(如果此地图不支持该操作)。什么是java中的破坏性和非破坏性方法?
答
一个简单的解释是破坏性方法是一种改变对象属性的方法。您不会改变对象的属性的非破坏性方法。
就你而言,破坏性意味着Map的内容将被修改,并且非破坏性将是一种在不修改内容的情况下实现目标的方法。
如果您举另一个例子,假设您有ArrayList对象list1
和list2
,并且您希望它们中的元素位于同一列表中。
list1.addAll(list2);
这样做,但你要改变list1
中的元素数量。所以这是破坏性的的形式。你通过追加更多的元素来破坏list1
。
List<Type> list3 = new ArrayList<Type>(list1);
list3.addAll(list2);
在这种情况下,你满足你的目标摆在list1
和list2
元素在同一个桶,但没有通过创建一个名为list3
新的列表改变它们中的任何一个,并用它来把所有的元素在你的这是非破坏性的这样做的方式,因为你在这里没有改变list1
,它始终保持不变。
答
对于其他人:问题是关于java.util.Map
接口,这句话是在它的文档中。
破坏性和非破坏性的方法不是一般的Java而言,它只是在此界面的范围。
正如引用句子中所述,破坏性方法是修改映射内容的那些方法,例如put
,clear
或remove
。非破坏性方法是仅执行读取操作的方法,如get
,containsKey
或containsValue
。
什么接口?哪张地图? – SilverNak
你知道可变和不可变操作是什么吗?听起来类似 – vikingsteve
谢谢SilverNak,那是Map接口 – Subbbu