Я пишу программу, которая собирает результаты счетчика алгоритма сортировки. Я сохраняю значения в JSONObject, чтобы я мог вычислять средние значения и так далее.Почему JSONObject.accumulate() влияет на значения других ключей?
public void addCounters(String sortName, Integer arraySize, long[] counters){
results.getJSONObject(sortName).getJSONObject("testresults").accumulate(arraySize.toString(), counters);
System.out.println(results);
}
Как вы можете видеть, он должен добавлять каждый результат к ключу, который относится к нему.
Первый выход правильно ..
{ "inSort": { "repetitionspertest": 100, "Описание": "Лучший случай", "numofcounters": 2, "TestResults": {» 1000 ": [998,0]}}}
Второй выход добавляет правильно ..
{" inSort ": {" repetitionspertest ": 100," описание ":" Лучший случай» , "numofcounters": 2, "testresults": {"1000": [[998,0], [998,0]]}}}
Но когда новый ключ добавляется, он изменяет ВСЕ массивы. Даже те, в разных тональностях ..
{ "inSort": { "repetitionspertest": 100, "Описание": "Лучший случай", "numofcounters": 2, "TestResults": { "1000": [[1998,0], [1998,0]], «2000»: [1998,0]}}}
Вы можете видеть, что значения в ключе «1000» меняются на 1998 вместо 998 Я даже пробовал написать свой собственный эквивалент методу .accumulate(), но безрезультатно.
Я предполагаю, что это связано с ссылкой на тот же массив в памяти, но я не знаю, как это решить!
Возможно, кто-нибудь предложит решение?
Заранее благодарен!
Это потому, что вы используете один и тот же объект для «1000» и «2000». –