我必须流经一组键/值对并修改每个键(而非值)以删除前置的字符串。我正在尝试在一个声明中做到这一点,但需要一点帮助。
我确定我需要执行.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
函数中,但是出现编译错误,提示需要功能接口。我可以在这里使用一些开箱即用的东西,还是真的需要实现自己的接口来摆脱字符串?
答案 0 :(得分: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依赖项