java - java中字符串数组数组的数据结构

标签 java arrays list arraylist multidimensional-array

我检查了其他问题并谷歌搜索,但没有找到符合我需求的正确答案。

这是网络应用程序,我正在使用休息服务。我有一个类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/

相关文章:

java - 使用另一个 WebElement 时获取 WebElement

javascript - 推送数组中属性的值

Python 列表乘法 : [[. ..]]*3 使 3 个列表在修改时相互镜像

r - 从 data.frames 列表列表创建数据框

java - 有没有办法在 Java 中呈现类似 'Hello, %(name)s' % {'name' :'Felix' } 的字符串?

java - USSD 应用程序自动化测试

java - 如何在java中划分数组中的 double ?

python - 在python中初始化矩阵

java - 解析 JSON 数组

Java - 数组 binarySearch 在自定义排序后返回意外结果