Сравните две карты для ключей и верните логическое значение - PullRequest
1 голос
/ 25 марта 2019

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

mapA
.entrySet()
.stream()
.filter(entry -> mapB.containsKey(entry.getKey()))
.collect(
    Collectors.toMap(Entry::getKey, Entry::getValue));

Но мой вопрос в том, что я могу сделать это в одной строке, которая не создаст другой список, но вернет логическое значениеесли они одинаковы или нет.

1 Ответ

6 голосов
/ 25 марта 2019

Для этого не нужно использовать потоки. Просто получите наборы ключей карт и используйте equals, который указан в Set следующим образом :

Возвращает true, если указанный объект также является набором, два набора имеют одинаковый размер, и каждый член указанного набора содержится в этом наборе [.]

Map<String, Integer> m1 = new HashMap<>();
m1.put("a", 10);
m1.put("b", 10);
m1.put("c", 10);

Map<String, Integer> m2 = new HashMap<>();
m2.put("c", 20);
m2.put("b", 20);
m2.put("a", 20);

System.out.println(m1.keySet().equals(m2.keySet()));  //true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...