我检查了其他问题并谷歌搜索,但没有找到符合我需求的正确答案。
这是网络应用程序,我正在使用休息服务。我有一个类Request
,它有一个属性RequestedAttrbs
。用户必须在请求中发送 RequestAttrbs
及其值,我必须存储它们。
现在用户可以提供:
id: 123
marks: 12, 13, 14
问题是用户可以提供多个属性,并且可以为每个属性提供多个值。哪种数据结构最适合处理这个问题? 我是java新手,想解决这个问题。
等待您的积极答复。
最佳答案
您可以使用普通的 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
版本稍微短一些,省去了您检查 key 是否已经存在并自己显式获取列表的麻烦。
关于java - java中字符串数组数组的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25144703/