Нужен функциональный интерфейс для работы со строкой - PullRequest
0 голосов
/ 17 октября 2018

Мне нужно пройти через набор пар ключ / значение и изменить каждый ключ (не значение), чтобы удалить предварительно добавленную строку.Я пытаюсь сделать это в одном утверждении, но мне нужно немного помочь с этим.

Я уверен, что мне нужна операция .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 голосов
/ 17 октября 2018

Вместо

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

...