我一直在努力想办法创建一个HashMap,将具有相同键的值(放入列表)分组。这就是我的意思:
假设我有以下键和值:
Value Key *Sorry I got the columns swapped
1 10
1 11
1 12
2 20
3 30
3 31
我想把这些值放到一个
Hashmap <Integer, List<Integer>>
这样它就会将值分组到具有相同键的列表整数中,类似于这样:
(1, {10, 11, 12}),(2, {20}), (3, {30,31})
现在,密钥和值存储在
Hashmap <Integer, Integer>
我不知道如何通过这个Hashmap循环创建新的Hashmap,关键是:值对列表。有人对这个话题有好的方法吗?
HashMap只为每个整数存储1个值。因此,对其进行迭代只会得到以下值:
Key Value
1 12
2 20
3 31
要迭代地图的内容,可以使用entrySet()方法:
for(Map.Entry<Integer, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue());
}
要构建列表地图,我建议您这样做:
List<Integer> list = map.get(key);
if(list == null) {
list = new ArrayList<Integer>();
map.put(key, list);
}
list.add(value);
不要使用普通的地图
使用谷歌番石榴的多地图
。
多重映射是一种
...将键映射到值的集合,类似于Map,但其中每个键可能与多个值相关联。
当然,这个概念也在其他图书馆得到了实施,番石榴只是我个人的喜好。
假设您创建了一个HashMap
public void addToMap(HashMap<Integer, List<Integer>> map, Integer key, Integer value){
if(!map.containsKey(key)){
map.put(key, new ArrayList<>());
}
map.get(key).add(value);
}
将此方法用于示例数据:
HashMap<Integer, List<Integer>> map = new HashMap<Integer, List<Integer>>();
addToMap(map, 1, 10);
addToMap(map, 1, 11);
addToMap(map, 2, 20);
addToMap(map, 3, 30);
addToMap(map, 3, 31);
问题内容: 我正在尝试从SQLite表中提取数据,该表将键值对存储在双列中。例如,用钥匙,,,和,该表将如下所示: 我想执行一个查询,以行作为键,值作为行,每行都给我。像这样: 我唯一能想到的解决方案是每个键的联接: 有一个更好的方法吗? 问题答案: 另一个可用的选项是使用 条件聚合 :
我有一个方法,它返回
我想添加每个扇区的不同工作者值,但将该值乘以另一个键:value属性。这是一个vue.js组合API WebApp。
下面是HashMap中包含的值 获取第一个键(即活动键)的Java代码 我们如何收集第一个键“值”(即33),我想把“键”和“值”都存储在单独的变量中。
我有 2 个数组: 我希望array1元素成为新Hash中的键,array2元素成为同一个Hash中相应的值。有人能建议一下怎么做吗? 谢谢
早上好, 很抱歉,如果这已经被问到了,但我正在构建一个java项目。 它是一个程序,允许用户插入投注(例如体育比赛的预测结果),并在以后允许用户插入所述比赛的最终结果。 这是由2个LinkedHashMaps完成的。一个键值对用户和预测分数,一个键值对用户和最终分数。 两个 LinkedHashMap 中键的顺序将与它们从另一个带有用户名称的数组获取键输入的顺序相同。因此,每次都只设置预测的和确定