Android 如何正确地向Hashmap添加数据

Android 如何正确地向Hashmap添加数据,android,hashmap,Android,Hashmap,我需要为我的android游戏存储一个名字和分数,经过一整天的尝试,从共享首选项到SQLite,我现在正在尝试一个HashMap,它似乎在存储我的名字和分数,但它总是覆盖上一个,基本上我一次只能有一个 以下是我的简化代码,向您展示了我所拥有的: Map<String,Integer> map = new HashMap<String,Integer>(); map.put(name, scorefromgame); for (String key : map.keySe

我需要为我的android游戏存储一个名字和分数,经过一整天的尝试,从共享首选项到SQLite,我现在正在尝试一个HashMap,它似乎在存储我的名字和分数,但它总是覆盖上一个,基本上我一次只能有一个

以下是我的简化代码,向您展示了我所拥有的:

Map<String,Integer> map = new HashMap<String,Integer>();
map.put(name, scorefromgame);

for (String key : map.keySet()) {
     Toast.makeText(getApplicationContext(),key, Toast.LENGTH_LONG).show();
     }

for (Integer value : map.values()) {
    Toast.makeText(getApplicationContext(), Integer.toString(value), Toast.LENGTH_LONG).show();
    }
Map Map=newhashmap();
map.put(名称、分数来自游戏);
for(字符串键:map.keySet()){
Toast.makeText(getApplicationContext(),key,Toast.LENGTH_LONG.show();
}
for(整数值:map.values()){
Toast.makeText(getApplicationContext(),Integer.toString(value),Toast.LENGTH_LONG.show();
}
所以name是一个字符串,scorefromgame是一个整数,一旦我添加了它们,我就使用for循环检查存储的值。当我回到我的游戏,再次玩,并添加另一个名称和分数,它覆盖了前一个,我应该如何添加数据到HashMap


我的目标是在HashMap中存储五个分数,然后在退出时将名称和分数存储到共享首选项中。我知道我做错了,如果您能给我一些建议,我将不胜感激,但我无法理解文档。

如果您需要为一个键维护多个值,您需要一个列表地图:

Map<String, List<Integer>> values = new HashMap<String, List<Integer>>();
Map values=newhashmap();
这称为多重映射。谷歌收藏有一个

我建议您封装如何在自定义类中完成此操作的详细信息。这将使客户端更容易使用

public class MultiMap<K, V> {
    private Map<K, V> multiMap = new HashMap<K, V>();

    public void put(K key, V value) {
        List<V> values = (this.multiMap.containsKey(key) ? this.multiMap.get(key) : new List<V>();
        if (value != null) {
            values.add(value);
        }
        this.multiMap.put(key, values);
    }

    public List<V> get(K key) {
        List<V> values = (this.multiMap.get(key) == null) ? new List<V>() : this.multiMap.get(key);
        return Collections.unmodifiableList(values);
    }
}
公共类多重映射{
私有映射multiMap=newhashmap();
公开作废认沽权(K键,V值){
列表值=(this.multiMap.containsKey(键)?this.multiMap.get(键):new List();
if(值!=null){
增加(价值);
}
this.multiMap.put(键、值);
}
公共列表获取(K键){
列表值=(this.multiMap.get(key)=null)?new List():this.multiMap.get(key);
返回集合。不可修改列表(值);
}
}

我认为在这一品脱,我已经超越了我的Android功能,看起来这将是一个非常复杂的代码只是为了我需要实现的,我会研究你的代码行,并进一步实验,看看我能学到什么!谢谢!