Nai*_*ain 4 java collections arraylist java-8 java-stream
我想拆分下面的字符串并将其存储在HashMap中:
String currentString= "firstName-lastName-rollNum-departmentNum=firstName1-lastName1-rollNum1-departmentNum1";
Run Code Online (Sandbox Code Playgroud)
我希望我的输出存储在地图中,如连字符( - )(firstName)之前的第一个字符串和(=)之后的第一个字符串(firstName1),......... ie
{firstName=firstName1,lastName=lastName1,rollNum=rollNum1,departmentNum=departmentNum1}
Run Code Online (Sandbox Code Playgroud)
下面的代码不适用于我的模式:
Map<String,String> mapVal= null;
mapVal = Pattern.compile("\\s*=\\s*")
.splitAsStream(currentString.trim())
.map(s -> s.split("-", 2))
.collect(Collectors.toMap(a -> a[0], a -> a.length>1? a[1]: ""));
Run Code Online (Sandbox Code Playgroud)
一旦我分割了字符串,我就不明白如何将所需的值组合在一起,如上所示.如果你没有得到我的问题,我道歉.
提前致谢 !!
一种更简单的方法是使用标准数组拆分.
String[] keyValues = currentString.split("=", 2);
String[] keys = keyValues[0].split("-");
String[] values = keyValues[1].split("-", keys.length);
Map<String, String> map = IntStream.range(0, keys.length).boxed()
.collect(Collectors.toMap(i -> keys[i], i -> values[i]));
Run Code Online (Sandbox Code Playgroud)
这里没有错误检查,但希望它能给你一般的想法.
| 归档时间: |
|
| 查看次数: |
616 次 |
| 最近记录: |