在一次写代码中发现返回的集合都是都是一样的数据,看了后台代码才发现list添加那里有问题,不多说,上代码:
错误代码示例
List
输出可以看到, 每一次循环我list前面的内容都被覆盖了
为了节约java内存,我把map直接在循环外new好,防止他每次循环都要new一次而导致浪费空间,后来发现错了!!
原因:
因为ArrayList集合里存放的是一个对象的引用。如果我把map对象new在循环外, 那么每次我改变map的时候只改变了他的内容, 而引用并没有发生改变,所以在改变map对象时,list之前添加的也会一起改变。所以我们应该把map new在循环的里面, 每次创建都有一个新的引用
正确代码示例:
List
输出可以看到list之前都对象都没有被覆盖了