我在理解一件事上有问题。

我有:

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是对对象的引用。您可以在许多地方复制此引用并以多种方式使用它,但是只有一个对象。这意味着当您更改对象时,该对象只有一个视图。

10-06 01:25