gpt4 book ai didi

android - 如何正确地将数据添加到 Hashmap

转载 作者:搜寻专家 更新时间:2023-11-01 08:59:24 25 4
gpt4 key购买 nike

我需要为我的 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();
}

所以 name 是一个字符串,scorefromgame 是一个整数,一旦我添加它们,我就使用 for 循环来检查存储的值。当我回到我的游戏并再次玩并添加另一个名字并得分时,它会覆盖以前的名字,我应该如何将数据添加到 HashMap?

我的目标是在 HashMap 中存储五个分数,然后在退出时将名称和分数存储到共享首选项中。我将不胜感激任何关于此的建议,因为我知道我做错了,但我无法理解文档。

最佳答案

如果您需要为一个键维护多个值,您将需要一个列表映射:

Map<String, List<Integer>> values = new HashMap<String, List<Integer>>();

这称为多 map 。 Google 收藏集有一个。

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

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);
}
}

关于android - 如何正确地将数据添加到 Hashmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16390210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com