我想将以下字符串拆分并存储到HashMap中:
以下代码不能匹配我的模式:
一旦我分割了字符串,我不知道如何将所需的值组合在一起,如上所示。如果您不理解我的问题,我很抱歉。
提前感谢!
String currentString= "firstName-lastName-rollNum-departmentNum=firstName1-lastName1-rollNum1-departmentNum1";
我希望我的输出结果被存储在一个映射中,就像在连字符(-)之前的第一个字符串(firstName)和等号(=)之后的第一个字符串(firstName1),......即:
{firstName=firstName1,lastName=lastName1,rollNum=rollNum1,departmentNum=departmentNum1}
以下代码不能匹配我的模式:
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]: ""));
一旦我分割了字符串,我不知道如何将所需的值组合在一起,如上所示。如果您不理解我的问题,我很抱歉。
提前感谢!
Stream.of
,但主要是考虑split
和map
的思路。 - NamancurrentString.split("=")
表达式重构为在此之前声明的本地值,然后将所有这些步骤转换为Stream操作。由于Stream无法保存一对两个元素,您必须使用数组来保存keys
和values
(二维数组类型已经有这两个变量)。在进行转换之后,重构它以使用流操作创建String[][]
,以不再有两个split('-')
操作。然后,您就可以得到我的答案了... - Holger