Java Complex Collection

时间:2015-10-21 12:58:26

标签: java collections

我有这种格式的数据:(在文件中)

key1:fieldname1:fieldvalue1
key1:fieldname2:fieldvalue2
key2:fieldname1:fieldvalue1

我需要将其格式化为:

{key1=[{fieldname1=fieldvalue1,fieldname2=fieldvalue2}],key2=[{fieldname1=fieldvalue1}]}

正如您所看到的,它涉及Map和ArrayList。 我实际上需要它在Map和ArrayList中。

请建议。

谢谢

2 个答案:

答案 0 :(得分:0)

查找字符串方法“split”以及如何使用它以及如何逐行读取文本文件。通过这种方式,您可以轻松地逐行解析并获取key,fieldname和fieldvalue。

然后你可以按照每行的顺序:

  1. 如果地图中不存在密钥,请在其中创建空数组。

  2. 将项目添加到指定键中指定的数组

答案 1 :(得分:0)

试试这个:

    String[] str = {"key1:fieldname1:fieldvalue1", "key1:fieldname2:fieldvalue2", "key2:fieldname1:fieldvalue1"};
    Map<String, List<String>> map = new HashMap<String, List<String>>();

    for (String s: str) {
        String[] temp = s.split(":");

        if (map.get(temp[0]) == null) {
            map.put(temp[0], new ArrayList());
        }
        map.get(temp[0]).add(temp[1] + "=" + temp[2]);
    }

此示例假设fieldname1:fieldvalue2需要存储为字符串。您可以获得高级别的想法,然后根据您的要求进行修改