2 回答
TA贡献1839条经验 获得超15个赞
您需要流式传输拆分数组,用于map操作它并最终将其收集到地图中:
return Arrays.stream(reports.split( "," ))
.map(s-> s.split("|"))
.collect(Collectors.toMap(p-> Long.parseLong(p[0]), p-> p[1]));
TA贡献1818条经验 获得超8个赞
地图 - 不允许重复键。也请查看下面的代码。我认为它也可能对您有所帮助或为您提供更多信息。我已将输入源字符串更改为1234345|str1,1234346|str2,1234347|str3并更新了额外的行,尤其是sysout打印内存值。
String source = "1234345|str1,1234346|str2,1234347|str3";
return Arrays.stream(source.split(","))
.map(s -> s.split("\\|"))
.collect( Collectors.toMap ( s -> { System.out.println(" 1: "+Long.valueOf ( s[0])); return Long.valueOf ( s[0]);} ,
s -> { System.out.println(" 2: "+s[1]);return s[1]; },
( (v1, v2) -> { System.out.println("------ line 131 : "+v1 +" "+v2); return v2 ;} )
)
);
使用上述来源,您将获得输出: {1234346=str2, 1234347=str3, 1234345=str1}
如果我将源更改为source = "123434|str1,123434|str2,123434|str3",则输出为{123434=str3}
添加回答
举报