Java 8 - поместить легкий элемент в целевую карту из другой карты - PullRequest
2 голосов
/ 19 сентября 2019

Мой код:

Map<String, Application> applications = new HashMap<>();

// add elements to applications here ...

applications.forEach((key, app) -> { System.out.println(key + " " + app.getHomeUrl()); });

Map<String, String> apps = new HashMap<>();
applications.forEach((key, app) -> { apps.put(key, app.getHomeUrl()); });
metrics.setApplications(apps);

Но я ищу, как использовать простой фильтр и не использовать топографическую карту (приложения)?

Консоль:

xxxx https://xxxx.github.io/xxxx.io
githubapi null
google http://www.google.fr
demo null
yyyy https://yyyy.github.io/yyyy.io

1 Ответ

4 голосов
/ 19 сентября 2019

Одним из способов избежать создания переменной apps будет

metrics.setApplications(applications.entrySet().stream()
        .filter(e -> e.getValue().getHomeUrl() != null) // filter out entries with null homeUrl
        .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue().getHomeUrl())));

, где toMap собирает key с карты applications, а значение отображается на homeUrl при сборе соответствующих записей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...