Для этого можно использовать набор:
Set<String> set = new HashSet<>();
List<String> duplicates = new ArrayList<>();
for(String s: one) {
if (!set.add(s)) {
duplicates.add(s);
}
}
Вы просто продолжаете добавлять все элементы в набор.Если метод add()
возвращает значение false, это означает, что элемент не был добавлен в набор, т. Е. Он там уже существует.
Ввод: [1, 3, 1, 3, 7, 6]
, дубликаты: [1, 3]
РЕДАКТИРОВАНИЕ
Для значения, которое считается 3 или более, вы можете использовать потоки, чтобы сделать это следующим образом:
List<String> collect = one.stream()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
.entrySet()
.stream()
.filter(e -> e.getValue() >= 3)
.map(Map.Entry::getKey)
.collect(Collectors.toList());
В основном вы собираете свой первоначальный список вкарта, где key
- строка, а value
- количество.Затем вы фильтруете эту карту для значений, число которых превышает 3, и собираете ее в список результатов