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

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

Сообщение Anonymous »

У меня есть два объекта Map: один HashMap и один LinkedHashMap. Оба содержат одни и те же значения (например, [1, 2]), а для LinkedHashMap порядок вставки сохраняется. Однако когда я сравниваю коллекции, возвращаемые функциейvalues() этих карт, с помощью методаquals(), сравнение возвращает false.
Изначально я предполагал, что это может быть связано с HashMap< /code> не сохраняет порядок вставки. Но когда я выполняю то же сравнение с двумя объектами LinkedHashMap, где порядок вставки действительно сохраняется, методquals() по-прежнему возвращает false.
Может ли кто-нибудь объясните, почему методquals() возвращает false в обоих случаях, хотя:
  • Содержимое значений одинаковое ([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»