2017-03-16 70 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