Как сравнивать элементы массивов, если у них разная длина?

У меня есть функция в которую я подаю два массива, и пытаюсь вые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();
    }
→ Ссылка