SlandShow
@SlandShow
70% of my body is made of movies.

Как удалить все уникальные элементы из коллекции?

Как мне изящно удалить все уникальные данные из списка?

Например, из такого:
List<String> list = new ArrayList<>();
 list.add("A");
 list.add("B");
 list.add("C");
 list.add("A");
 list.add("B");
 list.add("X");


Т.е должны удалиться все уникальные значения - C и X в данном случае.
  • Вопрос задан
  • 969 просмотров
Решения вопроса 2
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
list = list.stream()
            .collect(Collectors.groupingBy(
                Function.identity(),
                Collectors.counting()))
            .entrySet()
            .stream()
            .filter(e -> e.getValue() > 1)
            .map(Map.Entry::getKey)
            .collect(Collectors.toList());
Ответ написан
Например так:
Set<String> once = new HashSet<>();
Set<String> duplicates = new HashSet<>();
list.stream().forEach(s -> {
            if (!duplicates.contains(s)) {
                if (once.contains(s)) {
                    once.remove(s);
                    duplicates.add(s);
                } else {
                    once.add(s);
                }
            }
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы