Использование равных для сравнения значений карты возвращает false, даже если значения и порядок вставки одинаковыJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Использование равных для сравнения значений карты возвращает false, даже если значения и порядок вставки одинаковы

Сообщение Anonymous »

У меня есть два объекта карты: один hashmap и один LinkedHashmap . Оба содержат одинаковые значения (например, [1, 2]), и для LinkedHashmap порядок вставки сохраняется. Однако, когда я сравниваю коллекции, возвращаемые функцией Value () этих карт с использованием метода equals (), сравнение возвращает false.
Я первоначально предположил, что это может быть связано с хэшмапом не сохранением порядка внедрения. But when I perform the same comparison with two LinkedHashMap objects, where the insertion order is indeed preserved, the equals() method still returns false.
Can someone explain why the equals() method returns false in both cases, even though:
  • The content of the values ​​is the same ([1, 2]),
  • Порядок значений сохраняется в случае LinkedHashmap ?
import java.util.LinkedHashMap;
import java.util.HashMap;
import java.util.Map;

public class Main {
public static void main(String[] args) {

// HashMap example

Map map1 = new HashMap();
map1.put("a", 1);
map1.put("b", 2);

Map map2 = new HashMap();
map2.put("x", 1);
map2.put("y", 2);

System.out.println("map1 values: " + map1.values()); // prints [1, 2]
System.out.println("map2 values: " + map2.values()); // prints [1, 2]

System.out.println("map1.values().equals(map2.values()): " + map1.values().equals(map2.values())); // returns false

// LinkedHashMap example

Map map1l = new LinkedHashMap();
map1l.put("a", 1);
map1l.put("b", 2);

Map map2l = new LinkedHashMap();
map2l.put("x", 1);
map2l.put("y", 2);

System.out.println("map1l values: " + map1l.values()); // prints [1, 2]
System.out.println("map2l values: " + map2l.values()); // prints [1, 2]

System.out.println("map1l.values().equals(map2l.values()): " + map1l.values().equals(map2l.values())); // still returns false
}
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... -insertion
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»