Hej, mam za zadanie wyznaczyć części wspólne dwóch list (liczby, które są w obu listach).
Np. dla list1, które ma 9, 11, -3, 0 i list2 zawierającego 11, -3, 51, -15, odpowiedź to 11, -3.
Moja propozycja, taka ad hoc:
public static List<Integer> findCommonPart(List<Integer> numbers1, List<Integer> numbers2) {
List<Integer> commonPart = new ArrayList<>();
for (int i : numbers1) {
for (int j : numbers2) {
if (i == j)
commonPart.add(i);
}
}
return commonPart;
}
Tylko problem jest taki, że gdy jakaś liczba jest w pierwszej liście dwa razy, a w drugiej - raz (albo na odwrót), to dodaję ją do commonPart dwukrotnie (a powinno raz). Jeśli natomiast w obu listach jest po 2 razy - to tak samo powinno być w liście wynikowej. Jak to efektywnie usprawnić?