Сравнение чисел типа Integer в ArrayList с помощью == и equals()

143
30 ноября 2019, 14:50

Задача: 1) ввести 10 цифр с клавиатуры, 2) вывести длину самой длинной последовательности повторяющихся чисел в списке.

Пример для списка 1, 1, 4, 4, 4, 5, 6, 4, 23, 1:

ВЫВОД: 3

Теперь вопрос: почему программа не выводит корректную длину (для чисел больше 128) последовательности если в данной строке применяем "=="?

if (list.get(i) == list.get(i + 1)) 

если же написать

if (list.get(i).equals(list.get(i + 1)))

вывод будет корректным и для чисел больше 128

public static void main(String[] args) throws IOException {
        ArrayList<Integer> list = new ArrayList<>();
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int max = 1;
        int maximum = 0;
        for (int i = 0; i < 10; i++) {
            int n = Integer.parseInt(reader.readLine());
            list.add(n);
        }
        for (int i = 0; i < list.size() - 1; i++) {
            if (list.get(i).equals(list.get(i + 1))) {
                max++;
                if (max > maximum){
                    maximum = max;
                }
            }
            else
                if (max > maximum){
                maximum = max;
                max = 1;
            }
                else
                    max = 1;
        }
        System.out.println(maximum);
    }
READ ALSO
Сохранение токена для тестов

Сохранение токена для тестов

Есть класс, в котором я получаю токен:

127
Код ревью тестового проекта Android Dev

Код ревью тестового проекта Android Dev

Я начинающий Android разработчик и пытаюсь устроиться на работуНа одном из собеседованиях мне дали тестовое задание:

118
Разбить строку на слова

Разбить строку на слова

Мне нужно разбить строку на слова, а после проверить, сходятся ли 1-я и последняя буква слова

107