如何使用 java 语言将字符串解析为 hashmap
How to string parse into hashmap using java language
我有一个字符串,但无法将其解析为 Map
string s="sakib hasan : 3 : sumon ali : 4 : tutul : 100
我需要从上面的字符串创建一个 HashMap
。 sakib hasan,sumon ali,tutul,shila akter
应该是 HashMap
的 KEY,3,4,100,1,
应该是 KEY
的 VALUE
。
我已经尝试使用流畅的代码,但无法解决问题
Map<String, Integer>amap=new HashMap<String,Integer>();
String[] splt=s.split(":");
for (String string : splt)
{
String[] pair=string.split(" ");
amap.put(pair[0])+Integer.parseInt(pair[1]);
}
有没有办法不用硬编码就可以做到这一点
试试这个。
您对“:”的拆分将 return 每个项目单独。
然后你只需要将每个组作为一组,你可以在 for 循环中使用 i+=2
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]));
}
在您的代码中,您的 for 循环每次都会遍历您拆分的每个元素,仅添加哈希图索引 0 和 1。您需要递增索引。
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()));
这是一个使用流而不是 for 循环的类似解决方案:
IntStream.range(0, splt.length / 2)
.forEach(i -> map.put(splt[i], Integer.parseInt(splt[i + 1]));
或者您可以将 .forEach 变成创建地图的收集器。
至少,我得到了答案
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) {
}
我有一个字符串,但无法将其解析为 Map
string s="sakib hasan : 3 : sumon ali : 4 : tutul : 100
我需要从上面的字符串创建一个 HashMap
。 sakib hasan,sumon ali,tutul,shila akter
应该是 HashMap
的 KEY,3,4,100,1,
应该是 KEY
的 VALUE
。
我已经尝试使用流畅的代码,但无法解决问题
Map<String, Integer>amap=new HashMap<String,Integer>();
String[] splt=s.split(":");
for (String string : splt)
{
String[] pair=string.split(" ");
amap.put(pair[0])+Integer.parseInt(pair[1]);
}
有没有办法不用硬编码就可以做到这一点
试试这个。 您对“:”的拆分将 return 每个项目单独。
然后你只需要将每个组作为一组,你可以在 for 循环中使用 i+=2
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]));
}
在您的代码中,您的 for 循环每次都会遍历您拆分的每个元素,仅添加哈希图索引 0 和 1。您需要递增索引。
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()));
这是一个使用流而不是 for 循环的类似解决方案:
IntStream.range(0, splt.length / 2)
.forEach(i -> map.put(splt[i], Integer.parseInt(splt[i + 1]));
或者您可以将 .forEach 变成创建地图的收集器。
至少,我得到了答案
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) {
}