gpt4 book ai didi

java - 应用于 Vector 的 equals() 不一致

转载 作者:行者123 更新时间:2023-12-01 05:13:12 25 4
gpt4 key购买 nike

Vector <Double> x = new Vector<Double>();
Vector <Integer> y = new Vector <Integer>();
System.out.print(x.equals(y));

这打印:

true

为什么? equals() - 默认情况下 - 是否应该比较两个引用是否指向同一个对象?

最佳答案

equalsAbstractList 中实现。它遍历列表中的元素,如果不相等则返回 false。因为您的列表没有元素,所以返回 true。

public boolean equals(Object o) {
if (o == this)
return true;
if (!(o instanceof List))
return false;

ListIterator<E> e1 = listIterator();
ListIterator e2 = ((List) o).listIterator();
while(e1.hasNext() && e2.hasNext()) {
E o1 = e1.next();
Object o2 = e2.next();
if (!(o1==null ? o2==null : o1.equals(o2)))
return false;
}
return !(e1.hasNext() || e2.hasNext());
}

正如 Tom 在评论中提到的,阅读 List 接口(interface)的契约,您将看到它定义了行为。

Returns true if and only if the specified object is also a list, both lists have the same size, and all corresponding pairs of elements in the two lists are equal.

关于java - 应用于 Vector 的 equals() 不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1917155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com