写一个Java的方法,方法中有的参数是两个Map对象。目的是求这两个Map的所有不同的元素的集合。结果到回到主方法输出时,大的集合Map对象被修改了。这是我不希望的。因为下面我还要用这个对象进行操作。
经过查询,java原来有两种传递参数方式。1.传值 2.传引用 。对于简单类型的参数,如int ,string等,java用传值方式。对于对象,java用传引用的方式。所以前面的那个方法中的对象参数,传过去的是引用。所以该对象如果在方法中被修改,外面的引用的这个对修也被修改。其实java对象名,只是保存着这个对象的地址。
接下来,为了不使这个参数在方法中的修改也影响到外面。所以想到了对象复制,clone。就算新建一个对象,用等号赋值,那个对象名还引用的是同一个对象。所以必须用Clone。Map没有这个方法。但是Map有putAll().它把一个Map的所有元素全部复制到另一个Map中。HashMap 有clone方法。 所以我有这两种办法解决这个问题。