我有一个hashMap类型的变量来发送数据,并且我有几个重复的Key,而hashMap仅发送一个,如何发送我动态获得的几个相同的密钥?
Code:
Map<String,String> postData = new HashMap<>();
postData.put("K1", "AAAAA");
postData.put("K1", "BBBBB");
postData.put("K1", "CCCCC");
postData.put("K2", "AAAAA");
postData.put("K3", "AAAAA");
jsoup.connect
........
.data(postData)
....
仅发送“ K1”,“ CCCCC”
答案 0 :(得分:0)
HashMap
在设计上仅允许同一键使用一个值,并且在您重新设置相同键时将覆盖该值。您正在寻找的是MultiValueMap。检查以下线程:How do I add and remove items from a multivalue HashMap?
答案 1 :(得分:0)
在此处发布问题之前,请了解HashMap的工作原理。 https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html
HashMap存储一个键值对。 因此,如果再次输入密钥,它将仅更新值。
如果您这样做:
postData.put("K1", "AAAAA");
postData.put("K1", "BBBBB");
postData.put("K1", "CCCCC");
postData.put("K2", "AAAAA");
postData.put("K3", "AAAAA");
您最终得到:
"K1" => "CCCCC"
"K2" => "AAAAA"
"K3" => "AAAAA"
答案 2 :(得分:0)
地图的本质是您的键是唯一的。相同键没有多个值。
换句话说:例如,您要么必须发送多次,要么必须具有Map<String, List<String>>
。换句话说:“平面”映射不适用于处理同一键具有多个值的情况!
鉴于OP中的评论, other 解决方案可能是使用List<Pair<String, String>>
。含义:似乎您主要是想以某种方式传输映射“ A-> B”。然后,您将无法使用地图,而应该使用包含此类映射的列表!
答案 3 :(得分:0)
Java Collections中的HashMap不允许重复,但是您可以使用Apache的Common Collection'MultiMap'
代码:
MultiMap<String, String> postData= new MultiValueMap<>();
postData.put("K1", "AAAAA");
postData.put("K1", "BBBBB");
postData.put("K1", "CCCCC");
postData.put("K2", "AAAAA");
postData.put("K3", "AAAAA");
jsoup.connect
........
.data(postData)
....
要使用apache公共集合,请在pom.xml中添加以下依赖项或下载其jar:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.1</version>
</dependency>