我必须遍历一组键/值对并修改每个键(不是值)以删除前置字符串。我试图在一个声明中做到这一点,但需要一点帮助。我确定我需要.map()做手术,但我无法进行。在尝试任何转换之前,这是我的代码:Map<String, String> properties = configs.stream()
.flatMap(config -> config.getProperties().entrySet().stream())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (left, right) -> right));所以我天真的解决方案是包装Map.Entry::getKey在一个String函数中,但我收到一个编译错误,说需要一个函数式接口。有什么我可以在这里使用的开箱即用的东西,还是我真的需要实现我自己的接口来摆脱字符串?
1 回答
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
代替
Collectors.toMap(
Map.Entry::getKey,
...
您可以使用
Collectors.toMap(
e -> StringUtils.removeStart(e.getKey(), "prefix to remove"),
...
或者
Collectors.toMap(
e -> e.getKey().substring("prefix to remove".length()),
...
如果您没有 Apache Commons 依赖项
添加回答
举报
0/150
提交
取消