我在理解一件事上有问题。
我有:
List<Map> resultList = new ArrayList<Map>();
然后,这个
resultList
充满了一些数据resultList.addAll(somemethod(something, something, else));
在该方法的后面,我有这种代码:
Map timeSpan = someMethod(resultList, date);
timeSpan.put(KEY_ART, VALUE_ART);
timeSpan.put(KEY_TIMESPAN, true);
所以我现在有一个问题。如果
Map timeSpan
是引用List<Map> resultList
元素的映射,是否在put()
映射上使用timeSpan
方法影响resultList
中的元素?我问这个问题,因为一位同事告诉我,这是这样工作的-修改
timeSpan
中的元素也可以修改resultList
中的该元素。她经验丰富得多,我不仅想相信她,还想了解为什么它会这样工作。 最佳答案
您必须记住resultList
是对对象的引用。您可以在许多地方复制此引用并以多种方式使用它,但是只有一个对象。这意味着当您更改对象时,该对象只有一个视图。