猿问

需要一个功能接口来操作字符串

我必须遍历一组键/值对并修改每个键(不是值)以删除前置字符串。我试图在一个声明中做到这一点,但需要一点帮助。

我确定我需要.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函数中,但我收到一个编译错误,说需要一个函数式接口。有什么我可以在这里使用的开箱即用的东西,还是我真的需要实现我自己的接口来摆脱字符串?


慕村225694
浏览 136回答 1
1回答

一只名叫tom的猫

代替Collectors.toMap(&nbsp; &nbsp; Map.Entry::getKey,&nbsp; &nbsp; ...您可以使用Collectors.toMap(&nbsp; &nbsp; e -> StringUtils.removeStart(e.getKey(), "prefix to remove"),&nbsp; &nbsp; ...或者Collectors.toMap(&nbsp; &nbsp; e -> e.getKey().substring("prefix to remove".length()),&nbsp; &nbsp; ...如果您没有 Apache Commons 依赖项
随时随地看视频慕课网APP

相关分类

Java
我要回答