场景:
Map<String,List<Long>>prarmMap 是被引用的参数,即使在引用的时候重新拷贝一份
即Map<String,List<Long>>newPrarmMap = Maps.newHashMap(prarmMap );然后使用
newPrarmMap.values().获取List<Long>,然后对list做操作,那么这时被引用的参数prarmMap
里面的List也会被改动,原因就是因为,map里面的list开辟的内存空间地址没有变,所以改变list的值,其实是改变相同的内存空间地址的list的值;
解决这类坑,很简单,在后面引用list的时候,重新开辟一个内存空间地址去操作,即:
List<Long>newList = Lists.newArrayList(list);然后使用newList去做操作