Znalezienie duplikatów w liście

0

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ł?

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1