Проблема с вашим решением состоит в том, что вы передаете List<Map.Entry>
в TreeSet::removeAll
, когда он ожидает Itterable
.
set.removeAll(map.entrySet().stream()
.filter(x -> x.getValue() > 1)
.collect(Collectors.toList()));
Что вам нужно сделать, это сопоставить каждый из отфильтрованныхпредметы на integer
и собирать их вместо этого.
set.removeAll(map.entrySet().stream()
.filter(x -> x.getValue() > 1)
.map(Map.Entry::getValue) // get the value itself and collect those instead.
.collect(Collectors.toList()));
Вот тест, выполненный:
TreeSet<Integer> set = new TreeSet<>(Arrays.asList(1, 2, 3, 4, 5, 6, 7));
TreeMap<Integer, Integer> map = new TreeMap<Integer, Integer>() {{
put(1, 1); put(2, 2); put(3, 3);
}};
set.removeAll(map.entrySet().stream()
.filter(x -> x.getValue() > 1)
.map(Map.Entry::getValue)
.collect(Collectors.toList()));
System.out.println(set); // prints [1, 4, 5, 6, 7]