Znalezienie duplikatów w liście

Znalezienie duplikatów w liście
PL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 45
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ł?

MF
  • Rejestracja: dni
  • Ostatnio: dni
  • 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)

Kopiuj
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

AF
  • Rejestracja: dni
  • Ostatnio: dni
1

Posortuj lub użyj seta.

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • 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.