Создание потока для пересечения двух карт в зависимости от их значения - PullRequest
0 голосов
/ 05 мая 2019

У меня есть метод с именем getNames. Его цель: вернуть имена, которые встречаются на обеих картах. Я попытался переписать этот метод в поток. Но я не хочу, чтобы testOneNames был изменен в этой операции. Как восстановить его как поток?

private Map<String, List<String>> getNames(Map<String, List<String>> testOneNames, Map<String, List<String>> testSecondNames) {
    Map<String, List<String>> copyTestOneName = new HashMap<>(testOneNames);
    copyTestOneName.values().retainAll(testSecondNames.values());
    return copyTestOneName;
}

1 Ответ

0 голосов
/ 05 мая 2019

Вы можете сделать следующее:

private Map<String, List<String>> getNames(Map<String, List<String>> testOneNames, Map<String, List<String>> testSecondNames) {
    return testOneNames.entrySet().stream().filter(e -> testSecondNames.containsValue(e.getValue())).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
}
...