Groovy 和java的 两层以上的Map在Copy(putAll())的过程中只Copy一层,而里面的一层还是引用的状态,也就是说,两张Map的第一层是正常COPY的,并同时对里面的Map进行了同样的引用,因此,在外面的两个Map中的任意一个内Map进行修改的时候,其实外面的Map都已经被改掉了。
解决办法就是,在做Map的COPY的时候,对被COPY的Map做最深度的遍历,逐层COPY,这样COPY之后的两个Map就是两个独立的Map。
Groovy 和java的 两层以上的Map在Copy(putAll())的过程中只Copy一层,而里面的一层还是引用的状态,也就是说,两张Map的第一层是正常COPY的,并同时对里面的Map进行了同样的引用,因此,在外面的两个Map中的任意一个内Map进行修改的时候,其实外面的Map都已经被改掉了。
解决办法就是,在做Map的COPY的时候,对被COPY的Map做最深度的遍历,逐层COPY,这样COPY之后的两个Map就是两个独立的Map。