我在更改 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 替换旧值时,它会用新的 ArrayList 替换 HashMap 中的所有值,而不仅仅是具有匹配键的值。
我不知道问题是什么,有什么建议吗?