Jak znaleźć duplikaty w liście integerów? Przykładowa lista - {10,100,23,44,10,23,4,10}. Myślę o iterowaniu po kolei zaczynając od pierwszego - sprawdzając czy są powtórzenia danej liczby. Macie lepszy pomysł?
0
1
Możesz to zrobić szybko/ładnie używając streamów i metody frequency z Collections. W prawdzie złożoność będzie O(n2), ale taką samą miałbyś dla każdego elementu iterując po wszystkich innych (jak napisałes)
List<Integer> numbers = Arrays.asList(new Integer[]{10,100,23,44,10,23,4,10});
numbers.stream().filter(i -> Collections.frequency(numbers, i) >1)
.collect(Collectors.toSet()).forEach(System.out::println);
Wynik powyższego streama:
23
10
1
Posortuj lub użyj seta.
2
stream + grouping by + function.identity + collections.counting