如何使用java语言将解析字符串解析为hashmap

时间:2015-01-08 20:01:21

标签: java string dictionary hashmap

我有一个字符串,但无法将其解析为Map

string s="sakib hasan : 3 : sumon ali : 4 : tutul : 100

我需要从上面的字符串创建一个HashMapsakib hasan,sumon ali,tutul,shila akter应该是HashMap的关键,3,4,100,1,应该是VALUE的{​​{1}}个。

我尝试了流动的代码但无法解决问题

KEY

如果没有硬编码,有没有办法可以做到这一点

4 个答案:

答案 0 :(得分:6)

试试这个。 您对“:”的拆分将单独返回每个项目。

然后你只需要将每个组作为一组两个,你可以在i+=2的for循环中考虑

Map < String, Integer > amap = new HashMap < String, Integer > ();
String[] splt = s.split(" : ");
for (int i = 0; i < splt.length; i += 2) {
    amap.put(splt[i],Integer.parseInt(splt[i + 1]));
}

答案 1 :(得分:0)

在你的代码中,你的for循环遍历你拆分的每个元素和每一次,只添加hashmap索引0&amp;你需要增加指数。

    String s = "sakib hasan : 3 : sumon ali : 4 : tutul : 100 : shila akter : 1";

    Map<String, Integer> amap = new HashMap<String, Integer>();
    String[] splt = s.split(":");
    for(int i = 1; i < splt.length;i+=2)
        amap.put(splt[i-1].trim(), Integer.parseInt(splt[i].trim()));

答案 2 :(得分:0)

以下是使用流而不是for循环的类似解决方案:

IntStream.range(0, splt.length / 2)
    .forEach(i -> map.put(splt[i], Integer.parseInt(splt[i + 1]));

或者你可以将.forEach变成一个创建地图的收藏家。

答案 3 :(得分:0)

至少,我得到了答案

Map<String, Integer>amap=new HashMap<String,Integer>(); 
String[] splt=s.split(":");
try {
    for (int i = 0; i <= pair.length; i +=2) {
    amap.put(pair[i].trim(), Integer.parseInt(pair[(1 + i)].trim()));
}
} catch (Exception e) {

}