Задача решена, но через метод equals (в том месте, где мы сравниваем в ифе число numbers.get(i) и число numbers.get(i+1) )
Валидатор говорит, что если количество чисел в списке будет больше 127 чисел, то программа не будет работать
Расскажет кто нибудь?)
public class Main {
public static void main(String[] args) throws IOException {
int sum = 1;
int max = 0;
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
List<Integer> numbers = new ArrayList<>();
List<Integer> quantity = new ArrayList<>();
for(int i = 0; i < 10; i++){
String a = reader.readLine();
if(a.isEmpty()){
break;
}
else{
int b = Integer.parseInt(a);
numbers.add(b);
}
}
for(int i = 0; i < numbers.size()-1;i++){
if(numbers.get(i)==numbers.get(i+1)){
sum++;
}
else{
quantity.add(sum);
sum = 1;
}
quantity.add(sum);
}
max = quantity.get(0);
for(int i = 1; i < quantity.size();i++){
if(max<quantity.get(i)){
max = quantity.get(i);
}
}
System.out.println(max);
}
}
hidden #2264395
15 уровень
Почему сравнение в ифе "==" не то же самое, что и equals
Решен
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
IceBergMaster
29 февраля 2020, 18:02
== сравнивает ссылки
equals сами объекты
До 127 Integer кеширует значения, что-то типа пула для строк.
0
hidden #2264395
29 февраля 2020, 19:35
Спасибо за ответ!
Я смотрел подобные видео и немного это понимаю
Но разве у цифры (например 200) будут не одинаковые ссылки?
И что значит integer кеширует начения :]
0
Ksenia VolkovaJava Developer в DXCMaster
29 февраля 2020, 19:42
Нет, не будут. Ссылки одинаковые, если они указывают на один и тот же объект. А здесь будут созданы два разных объекта, хоть и с одинаковым значением.
У класса Integer внутри есть IntegerCache, который хранит массив Integer со значениями от -128 до 127.
А вот как выглядит метод Integer.valueOf()
Как видишь, он проверяет, содержится ли значение в интервале кэша, и если да - возвращает объект из кэша. Иначе - создает новый объект.
Поэтому при создании объекта для числа 5, например, ты каждый раз будешь получать ссылку на один и тот же объект из кэша. А для числа 200 - каждый раз будешь создавать новый объект.
+1
hidden #2264395
29 февраля 2020, 19:54
Спасибо за ответ!
Стало очень интересно и зашел в идею. Сделал так:
идея возвратила тру..
А когда делаю так, возвращает фолс
Я знаю, что инт - это примитив (коробка). А интеджер что тогда?
0
Ksenia VolkovaJava Developer в DXCMaster
29 февраля 2020, 20:04
Integer - ссылочный тип, обертка над примитивом.
+1