将字符串拆分为hashmap

时间:2017-12-15 06:03:33

标签: java hashmap

String str="ABCD 1 key1=value1 key2=value2 key3=value3";

我想将上面的字符串转换为键值对

Map<String, String> map = new HashMap<String, String>();

如果我想访问 key1 ,那么它应该返回 value1 例如:map.get(“key1”)应返回value1。

请帮我一个有效的方法将其转换为hashmap

2 个答案:

答案 0 :(得分:3)

可能最安全的方法是为键/值对定义正则表达式模式,然后迭代字符串,应用该模式。在这种情况下,我们可以尝试使用以下模式:

\b([^\s]+)=([^\s]+)\b

密钥和值将分别作为第一个和第二个捕获组使用。需要一些轻微的功能,因为并非所有字符串都是键值(即主要内容不属于最终地图)。

Map<String, String> map = new HashMap<>();
String str="ABCD 1 key1=value1 key2=value2 key3=value3";
String pattern = "\\b([^\\s]+)=([^\\s]+)\\b";

Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(str);

while (m.find()) {
    System.out.println("Found a key/value: (" + m.group(1) + ", " + m.group(2) + ")");
    map.put(m.group(1), m.group(2));
}

以上代码段输出以下内容:

Found a key/value: (key1, value1)
Found a key/value: (key2, value2)
Found a key/value: (key3, value3)

Demo

答案 1 :(得分:-1)

您可以尝试编写如下代码

public static void main(String[] args) {
    String str = "key1=value1 key2=value2 key3=value3";
    Map<String, String> map = new HashMap<String, String>();

    String[] strArray = str.split(" ");
    for (int i = 0; i < strArray.length; i++) {

        String data = strArray[i];

        String[] keyValue = data.split("=");

        map.put(keyValue[0], keyValue[1]);

    }

    System.out.println(map.get("key1"));

}