我检查了其他问题并用Google搜索,但根据我的要求找不到合适的答案。
这是网络应用,我正在使用休息服务。我有一个班级Request
,它有一个属性RequestedAttrbs
。用户必须在请求中发送RequestAttrbs
及其值,我必须存储它们。
现在用户可以提供:
id: 123
marks: 12, 13, 14
问题是用户可以提供多个属性,并且可以为每个属性提供多个值。哪种数据结构最适合处理? 我是java的新手,想要解决这个问题。
等待你的肯定回复。
答案 0 :(得分:2)
您可以使用普通Map<String, List<String>>
类型,例如:
String key = "keyValue";
String value1 = "value1";
String value2 = "value2";
String value3 = "value3";
Map<String, List<String>> requestAttrbs1 = new HashMap<String, List<String>>();
if (!requestAttrbs1.containsKey(key)) {
requestAttrbs1.put(key, new ArrayList<String>());
}
requestAttrbs1.get(key).add(value1);
requestAttrbs1.get(key).add(value2);
requestAttrbs1.get(key).add(value3);
requestAttrbs1.get(key).remove(value2);
for (String value : requestAttrbs1.get(key)) {
System.out.println(value);
}
或者,如果您可以使用库,则可能需要查看MultiValueMap
中的Commons Collections:
MultiValueMap<String, String> requestAttrbs2 = new MultiValueMap<String, String>();
requestAttrbs2.put(key, value1);
requestAttrbs2.put(key, value2);
requestAttrbs2.put(key, value3);
requestAttrbs2.removeMapping(key, value2);
for (String value : requestAttrbs2.getCollection(key)) {
System.out.println(value);
}
两个代码段都会打印出来:
value1
value3
正如您所看到的,MultiValueMap
版本稍微短一些,省去了检查密钥是否已存在并自行明确获取列表的麻烦。