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ł?
- Rejestracja:około 6 lat
- Ostatnio:około 2 lata
- Lokalizacja:Kraków
- Postów:58
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

- Rejestracja:ponad 21 lat
- Ostatnio:około 3 lata
- Lokalizacja:Space: the final frontier
- Postów:26433
2
stream + grouping by + function.identity + collections.counting
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.