猿问

HashMap 使用流和子串

我想知道如何实现以下目标。

“t12345-g1234-o1234”

我有一行包含由连字符分隔的多个字段,该字段由其标识符(第一个字母)和值组成。

如何使用 java 8 流实现如下所示的地图。

{"t","12345"}, {"g","1234"}, {"o","1234"}

编辑

我尝试了以下方法,但我不明白如何获取子字符串信息。

Arrays.stream(line.split("-"))
.collect(Collectors.toMap(String::substring(0,1),String::substring(1));


四季花海
浏览 198回答 2
2回答

杨__羊羊

您可以使用&nbsp;Collectors.toMapMap<String,&nbsp;String>&nbsp;result&nbsp;=&nbsp;Arrays.stream(s.split("-")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.toMap(part&nbsp;->&nbsp;part.substring(0,&nbsp;1), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;part&nbsp;->&nbsp;part.substring(1)));第一个参数toMap是 keyMapper。它选择键作为拆分字符串部分的第一个字符。part.substring(0, 1)- 它将返回从长度为 1(这是第一个字符)的索引 0 开始的子字符串。第二个参数是 valueMapper。第一个字符之后是其余部分。part.substring(1)- 返回从索引 1 开始的子字符串(由于没有指定结束索引,它将被视为part.length.

UYOU

像这样的东西:Map<String,&nbsp;String>&nbsp;map&nbsp;=&nbsp;Arrays.stream(str.split("-")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.map(s&nbsp;->&nbsp;Pair.of(s.substring(0,&nbsp;1),&nbsp;s.substring(1))) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.toMap(Pair::getKey,&nbsp;Pair::getValue));我在这里使用了Pair。
随时随地看视频慕课网APP

相关分类

Java
我要回答