HashMap>で値を変更する際に問題が発生しました。最初に私はこれを行います:
HashMap<String, ArrayList<Integer>> countries = new HashMap<>();
ArrayList<Integer> medals = new ArrayList<>();
medals.add(0); medals.add(0); medals.add(0);
for(int i = 0; i < COUNTRY.length; i++){
countries.put(COUNTRY[i], medals);
}
HashMapに静的配列のキーを入力し、0、0、0で入力されたArrayListのデフォルト値を追加します。次にこれを行います。
Integer plus = new Integer(1);
for(int j = 0; j < athletes.size(); j++){
if(j == 3)
break;
Athlete a = athletes.get(j);
ArrayList<Integer> medals = countries.get(a.getCountry());
Integer medal = medals.get(j) + plus;
medals.set(j, medal);
countries.put(a.getCountry(), medals);
}
アスリートの結果ですでにソートされているアスリートで満たされたArrayListがあります。私がやろうとしているのは、上位3位のアスリートを選び、HashMap値を更新して、ArrayListに、各国が獲得した金、銀、銅メダルの数を表す3つの数値が含まれるようにすることです。問題は、古い値を新しいArrayListに置き換えようとすると、HashMap内のすべての値が、一致するキーを持つ値だけでなく、新しいArrayListに置き換えられることです。
私は問題が何であるかわかりません、何か提案はありますか?