我有两个在 equals() 方法下相等的 ArrayList,但它们具有不同的哈希码。这里发生了什么?
根据 Java List API:“list1.equals(list2) 意味着 list1.hashCode()==list2.hashCode() 用于任何两个列表 list1 和 list2,这是 Object.hashCode() 的一般合同所要求的。 "
这是代码:
List<nut> l1= new ArrayList<>(Arrays.asList(new nut((short) 4, (short) 2),
new nut((short) 5, (short) 0), new nut((short) 1, (short) 3)));
List<nut> l2= new ArrayList<>(Arrays.asList(new nut((short) 4, (short) 2),
new nut((short) 5, (short) 0), new nut((short) 1, (short) 3)));
System.out.println(l1.equals(l2));
System.out.println(l1.hashCode());
System.out.println(l2.hashCode());
输出:真-2130368428 1856372392