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

时间:2018-10-17 17:23:59

标签: java java-8 java-stream

我必须流经一组键/值对并修改每个键(而非值)以删除前置的字符串。我正在尝试在一个声明中做到这一点,但需要一点帮助。

我确定我需要执行.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 个答案:

答案 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依赖项