javaMap中的重复条目

kwvwclae  于 2021-06-30  发布在  Java
关注(0)|答案(6)|浏览(279)

这个问题在这里已经有答案了

java hashmap重复元素(6个答案)
7年前关门了。
我正在读一个json对象,并将它们作为键值对设置到hashmap中,到目前为止一切都很好。现在我遇到了一个问题,我有一个特殊的键,它在json对象中是重复的,但是有不同的值。
如:
“id”:31231
“id”:33445
我现在需要这两个值。有谁能给我推荐存储这些数据的最佳数据结构吗。

vdgimpew

vdgimpew1#

是的,做这个 Map 值a List 并将这两个值相加。这叫做多重Map。

wwtsj6pe

wwtsj6pe2#

你可以使用多重Map或自己制作 Map<String,List<Value> .

xggvc2p6

xggvc2p63#

guava库还包含多Map接口以及各种实现。

7gs2gvoe

7gs2gvoe4#

最好保留一个json数组,而不是密钥id的单个值。这就是实现上述建议后json的外观:

{"ids": [{"id": "a"}, {"id": "b"}], "x": "c", "y": "d", ...  }

读取时,只需获取ids键的值(json数组)并遍历它,然后从json数组中的json对象获取id。
我认为它应该对你的问题起作用。

l7mqbcuq

l7mqbcuq5#

您可以定义 Map<String,Set<Integer>> ,如果不希望对同一个json对象使用重复的值。否则,可以这样定义集合: Map<String,List<Integer>> . 其中json对象是键,值是针对json对象的整数值的集合/列表。代码逻辑应该是这样的
在hashmap中插入条目之前,请检查该键是否已经存在
答。如果键不存在,则创建一个新的集合/列表,将该值添加到se/列表中,并将其插入到键中
b。如果键存在,则根据该键获取集合/列表,并在集合中添加元素
希望你能编出来。

lh80um4z

lh80um4z6#

使用multimap commons collections 3.2.1api中提供的multimap

MultiMap multiMap = new MultiValueMap();
       multiMap.put("key", 12334);
       multiMap.put("key", 31231);
       multiMap.put("key", 12312);
       multiMap.put("key", 12312);
       System.out.println(multiMap);

{键=[12334、31231、12312、12312]}

相关问题