为了账号安全,请及时绑定邮箱和手机立即绑定

HashMap 使用流和子串

HashMap 使用流和子串

四季花海 2021-08-25 17:27:08
我想知道如何实现以下目标。“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));
查看完整描述

2 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

您可以使用 Collectors.toMap

Map<String, String> result = Arrays.stream(s.split("-"))
            .collect(Collectors.toMap(part -> part.substring(0, 1),
                    part -> part.substring(1)));

第一个参数toMap是 keyMapper。它选择键作为拆分字符串部分的第一个字符。part.substring(0, 1)- 它将返回从长度为 1(这是第一个字符)的索引 0 开始的子字符串。

第二个参数是 valueMapper。第一个字符之后是其余部分。part.substring(1)- 返回从索引 1 开始的子字符串(由于没有指定结束索引,它将被视为part.length.


查看完整回答
反对 回复 2021-08-25
?
UYOU

TA贡献1878条经验 获得超4个赞

像这样的东西:

Map<String, String> map = Arrays.stream(str.split("-"))
                .map(s -> Pair.of(s.substring(0, 1), s.substring(1)))
                .collect(Collectors.toMap(Pair::getKey, Pair::getValue));

我在这里使用了Pair


查看完整回答
反对 回复 2021-08-25
  • 2 回答
  • 0 关注
  • 197 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信