在 Java 中将 String 转换为 Hashmap

Convert String to Hashmap in Java

我有以下字符串:

{id=1111, company=A Sample Company}

我想将其转换回散列图。我在下面尝试了以下代码

protected HashMap<String,String> convertToStringToHashMap(String text){
    HashMap<String,String> data = new HashMap<String,String>();
    Pattern p = Pattern.compile("[\{\}\=\, ]++");
    String[] split = p.split(text);
    for ( int i=1; i+2 <= split.length; i+=2 ){
        data.put( split[i], split[i+1] );
    }
    return data;
}

但问题是它不能转换带空格的字符串。它输出如下内容:

{id=1111, company=A, Sample=Company}

我认为这与正则表达式有关。帮助!谢谢

像这样的东西对你有用:

public static void main(String[] args) {
    String s = "{id=1111, company=A Sample Company}";
    s=s.replaceAll("\{|\}", "");
    Map<String, String> hm = new HashMap<String, String>();
    String[] entrySetValues = s.split(",");
    for(String str : entrySetValues){
        String[] arr = str.trim().split("=");
        hm.put(arr[0], arr[1]);
    }
    System.out.println(hm);
}

{id=1111, company=A Sample Company}

您可以使用 Guava'a 分离器 (com.google.common.base.Splitter) https://code.google.com/p/guava-libraries/

String s = "{id=1111, company=A Sample Company}";
String stringWithoutBracket = s.substring(1, s.length() - 1);
Map<String, String> properties = Splitter.on(",").withKeyValueSeparator("=").split(stringWithoutBracket);

使用Java流:

public static void main(String[] args) throws Exception {

    String value = "{id=1111, company=A Sample Company}";
    Map<String, String> map = Arrays.stream(value.replaceAll("[{}]", " ").split(","))
            .map(s -> s.split("=", 2))
            .collect(Collectors.toMap(s -> s[0].trim(), s -> s[1].trim()));
    System.out.println(map);
}

O/P: {company=A Sample Company, id=1111}