呼び出されたメソッドで以下を使用して元のリストをコピーした場合でも、呼び出し元のメソッドで元のデータが変更されるのはなぜですか。
originalDatesSerie = datesSerie ;
を使用する代わりに:
originalDatesSerie.addAll(datesSerie) ;
呼び出されたメソッドで使用する場合、元のリストは呼び出し元のメソッドにそのまま保持されるaddAll
ため、その場合の結果は期待どおりです。
これがOkである醜いコードの一部です(ただし、直接等しい割り当てを使用している場合はNOKです):
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);
}