Java 循环通过hashmap将同一个键的值分组为<;键,列表<;价值观>&燃气轮机;一对
我一直很难想出一种方法来创建一个HashMap,将具有相同键的值分组(放入列表中)。这就是我的意思: 假设我有以下键和值:Java 循环通过hashmap将同一个键的值分组为<;键,列表<;价值观>&燃气轮机;一对,java,hashmap,Java,Hashmap,我一直很难想出一种方法来创建一个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>>
Value Key *Sorry I got the columns swapped
1 10
1 11
1 12
2 20
3 30
3 31
我想把这些值放到
Hashmap <Integer, List<Integer>>
Hashmap
因此,它将值分组到具有相同键的列表整数中,如下所示:
(1,{10,11,12}),(2,{20}),(3,{30,31})
现在,密钥和值存储在
Hashmap <Integer, Integer>
Hashmap
我不知道如何循环使用这个Hashmap来创建带有key:List of Values对的新Hashmap。有人对这个话题有很好的理解吗?用谷歌番石榴代替普通的
地图
Multimap
是一个
…将键映射到值的集合,类似于映射,但其中每个键可能与多个值关联
当然,这一概念也在其他库中得到了实现,番石榴只是我个人的偏好。您的实际情况不起作用,因为HashMap
无法存储与1,10
和1,11
中相同密钥的两对
您可以轻松地开发自己的多重映射,但最好的方法是使用已经为此开发的类,framework已经为您准备了一个类。假设您创建了一个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);
}
public void addToMap(HashMap映射、整型键、整数值){
如果(!map.containsKey(键)){
put(key,newarraylist());
}
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);
HashMap map=newhashmap();
addToMap(地图,1,10);
addToMap(地图,1,11);
addToMap(地图,2,20);
addToMap(地图,3,30);
addToMap(map,3,31);
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());
}
for(Map.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);
List List=map.get(键);
if(list==null){
列表=新的ArrayList();
地图。放置(键、列表);
}
列表。添加(值);
您确定这些值存储在映射中吗
?由于HashMap
中的键是唯一的,我打赌您的大部分信息都丢失了。对(Map.Entry e:yourMap){out.println(e.getKey()+“”+e.getValue());}执行一个简单的循环以检查当前映射的内容。映射有唯一的键。键1是如何重复的?Hashmap不允许一个键有多个值-你不能在Hashmap中发布初始列表,句号。我做了out.print,键和值都按它应该的那样打印出来。contains(键)或map.containsKey(键)