Сравнение int в ArrayList [дубликат]

160
29 января 2022, 00:30
На этот вопрос уже даны ответы здесь:
Сравнение объектов типа Integer Java (2 ответа)
Закрыт 2 года назад.
public class Test {
public static void main(String[] args) {
    List<Integer> list = new ArrayList<Integer>();
    Collections.addAll(list, 127,127,128,128,2,4,4,8,8,4,12,12,14,14,128,128,128,500,500,500,500,500,-127,-127,-128,-128,-129,-129);
    for (int x = 0; x < list.size() - 1; x++) {
        if (list.get(x) != list.get(x + 1)){
            System.out.println(list.get(x) + " != " + list.get(x + 1));
        }
        if (list.get(x) == list.get(x + 1)) {
            System.out.println(list.get(x) + " == " + list.get(x + 1));
        }
    }
}

}

Вывод из консоли :

127 == 127                                                                            
127 != 128                                
128 != 128                                         
128 != 2                                  
2 != 4                                        
4 == 4                                    
4 != 8                                           
8 == 8                                                 
8 != 4                                       
4 != 12                                           
12 == 12                                                                                     
12 != 14                                                       
14 == 14                                                                  
14 != 128                                                                   
128 != 128                                                                   
128 != 128                                                                
128 != 500                                                      
500 != 500                                                         
500 != 500                                                       
500 != 500                                                 
500 != 500                                                      
500 != -127                                                         
-127 == -127                                                          
-127 != -128                                                          
-128 == -128                                                       
-128 != -129                                                       
-129 != -129 

Доброго времени! Столкнулся с тем что при проверке на равенство все числа больше 127 и меньше - 128 проходят проверку не равно как в примере выше. Хотелось бы разобраться почему так происходит и как это исправить. Заранее спасибо!

Answer 1

Не используйте сравнение объектов через ==, сравнивайте через equals.

public class Main {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>();
        Collections.addAll(list, 127, 127, 128, 128, 2, 4, 4, 8, 8, 4, 12, 12, 14, 14, 128, 128, 128, 500, 500, 500, 500, 500, -127, -127, -128, -128, -129, -129);
        for (int x = 0; x < list.size() - 1; x++) {
            if (!list.get(x).equals(list.get(x + 1))) {
                System.out.println(list.get(x) + " != " + list.get(x + 1));
            }
            if (list.get(x).equals(list.get(x + 1))) {
                System.out.println(list.get(x) + " == " + list.get(x + 1));
            }
        }
    }
}
READ ALSO
как правильно добавить библиотеки в android cmake jni

как правильно добавить библиотеки в android cmake jni

Имеется cmake файл, не знаю правильно ли добавляю в неё зависимости библиотекнужно добавить egl и glesv3

124
Проблема с плавным отображение в OpenGL

Проблема с плавным отображение в OpenGL

Программа должна крутить куб на который наложена текстура

206
Помогите с C++ | float и Char

Помогите с C++ | float и Char

Есть переменная, которую получаю из класса (тип float): Class->floatVar Нужно вывести нормально с char

114
Хеширование SHA-256 на видеокарте. Решение, которое использовало бы GPU

Хеширование SHA-256 на видеокарте. Решение, которое использовало бы GPU

Нужно увеличить скорость хеширования sha256 через pythonСтандартный hashlib работает через CPU

66