用于在HashMap Java 8中拆分字符串和存储的模式

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)

一旦我分割了字符串,我就不明白如何将所需的值组合在一起,如上所示.如果你没有得到我的问题,我道歉.

提前致谢 !!

spr*_*ter 7

一种更简单的方法是使用标准数组拆分.

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)

这里没有错误检查,但希望它能给你一般的想法.