Как сравнивать элементы массивов, если у них разная длина?
У меня есть функция в которую я подаю два массива, и пытаюсь выеtсти число одинаковых
элементов в обоих массивах, но вот беда, эти массивы имеют разную длину, как можно сделать что
бы программа не выдавала ошибку Index 3 out of bounds for length 3
int[] arr1 = {1, 2, 3};
int[] arr2 = {1, 2, 2, 2};
System.out.print(tablica01.licznosc(arr1, arr2));
public int licznosc (int[] talica01, int[] talica02) {
int counter = 0;
Arrays.sort(talica01);
Arrays.sort(talica02);
for (int i = 0; i < Math.max(talica01.length, talica02.length); i++) {
if (talica01[i] == talica02[i])
counter++;
}
return counter;
}
Ответы (1 шт):
Автор решения: Михаил Муругов
→ Ссылка
Какие результаты ожидаете для
{1, 1}и{1}?{1}и{1, 1}?
@МихаилМуругов для обов случаев ожидаю ответ: 1
Тогда предлагаю следующее решение:
public int licznosc (int[] talica01, int[] talica02) {
// Приводим оба массива к Set (коллекция уникальных элементов)
Set<Integer> lhs = Arrays.stream(talica01).boxed().collect(Collectors.toSet());
Set<Integer> rhs = Arrays.stream(talica02).boxed().collect(Collectors.toSet());
// Оставляем в lhs только те элементы, что есть и в rhs
lhs.retainAll(rhs);
return lhs.size();
}