什么是java中的破坏性和非破坏性方法?

时间:2017-03-16 07:27:20

标签: java

  

"破坏性"如果此映射不支持该操作,则此接口中包含的方法(即修改它们操作的映射的方法)被指定为抛出UnsupportedOperationException。

2 个答案:

答案 0 :(得分:2)

对于其他人:问题是关于java.util.Map界面,这句话在其文档中。

破坏性和非破坏性方法不是一般的Java术语,它只是在这个界面的范围内。

正如在引用的句子中所说,破坏性方法是修改地图内容的方法,例如putclearremove。非破坏性方法是仅执行读取操作的方法,如getcontainsKeycontainsValue

答案 1 :(得分:2)

一个简单的解释是破坏性方法是一种改变对象属性的方法。一种非破坏性的方法,你不会改变对象的属性。

在您的情况下,破坏性意味着地图的内容将被修改,非破坏性将是实现目标的一种方式,而无需修改内容。

如果再举一个例子,假设您有ArrayList对象list1list2,并且您希望它们中的元素位于同一列表中。

list1.addAll(list2); 

这样做,但您正在更改list1中的元素数量。因此,这是破坏性形式。您通过向其添加更多元素来破坏list1

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

在这种情况下,您满意的目标是将list1list2中的元素放在同一个存储桶中,但不要通过创建名为list3的新列表来更改其中任何一个元素使用它来将所有元素放入列表中。这是非破坏性的方式,因为您没有在此处更改list1,它始终保持不变。