java - 将 Java 中不同类型的 HashMap 组合成一个通用的 HashMap
问题描述
我的问题从 Java 中的 HashMap 的限制开始,它不允许对同一个键使用多个值。正如我在下面编写的代码中一样,我需要为k5 & k6
.
map是 QueryParameters 的主要哈希图,我将传递它以在我的 RestAPI 请求中使用。尝试的方法:创建不同的 String 和 String[] 类型的 Map 然后合并,我发现不允许合并。相同的代码已通过 // 标记为注释
我的 REST 请求如下所示,我发现很难以下列方式发送它:
https://myURL/api&k1[]=value&k2=2value&k5[]=v3&k5[]=v4&k5[]=v5&k6[]=v7&k6[]=v8&k6[]=v8
如果有任何其他方式可以在 Java 中表示这一点,请告诉我。
Map<String, String> map = new HashMap<>();
map.put("k1", "value");
map.put("k2", "2value");
//String[] k5 = new String[]{"v3", "v4", "v5"};
map.put("k5[]", "v3");
map.put("k5[]", "v4");
map.put("k5[]", "v5");
//String[] k6= new String[]{"v7", "v8", "v9"};
map.put("k6[]", "v7");
map.put("k6[]", "v8");
map.put("k6[]", "v9");
解决方案
其实很简单。这是您需要做的:
Map<String, String[]> map = new HashMap<>();
map.put("v3", new String[] { "v", "foo", "bar" });
如果要向其中添加更多元素,可以将地图定义为Map<String, List<String>>
Map<String, List<String>> map = new HashMap<>();
List<String> initialList = new ArrayList<>();
initialList.add("v");
initialList.add("foo");
initialList.add("bar");
map.put("v3", initialList);
// add some new String
map.get("v3").add("Some_new_string");
// adding a whole new list
map.get("v3").addAll(Arrays.asList("new_element_1", "new_element_2"));
推荐阅读
- python - 分段操作“numpy.ndarray”和“str”不支持“>=”
- android - 如何在图像编辑器中设置 sourceImagePath、outputFile
- javascript - 无法单击 selenium webdriver 中的剑道下拉菜单
- excel - 当“On Error Resume Next”将先前的值留在变量中时,如何返回空白或零?
- php - 我可以在模型中添加新键吗?
- django - 在没有循环的情况下从模板中的数据库中获取内容?
- hyperledger-fabric - 使用 go sdk 开发一个超级账本结构链码好吗?
- laravel - 如果项目(多个项目)将在几天后过期,如何通知管理员-Laravel
- node.js - 在 mongoosejs 中执行创建后使用结果填充数据
- reactjs - React:基于对象状态数组的过滤表?