为什么我在调用方法中更改了原始数据,即使在被调用方法中使用以下内容复制原始列表:
originalDatesSerie = datesSerie ;
而不是使用:
originalDatesSerie.addAll(datesSerie) ;
在被调用方法中使用时,原始列表保持在调用方法addAll
中,因此在这种情况下结果符合预期。
这是一段丑陋的代码,它是好的(但如果使用直接相等的分配则不行):
private static HashMap<String, Object> autoScaling(List<Date[]> datesSerie, List<double[]> valuesSerie,
HashMap<String, Long> xminMax) {
// Copy original List (required to keep them unchanged)
List<Date[]> originalDatesSerie = new ArrayList<Date[]> ();
originalDatesSerie.addAll(datesSerie);//do NOT use "="
List<double[]> originalValuesSerie = new ArrayList<double[]> ();
originalValuesSerie.addAll(valuesSerie);//do NOT use "="
...
// Concat new datas with original datas
originalDatesSerie.addAll(Xaxis);
originalValuesSerie.addAll(Yaxis);
}