Одним из способов избежать создания переменной 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
при сборе соответствующих записей.