不同的引用堆栈返回等于true

时间:2014-02-15 18:36:38

标签: java data-structures stack

 towers=new ArrayList<>();
 towers.add(new Stack<Integer>());
 towers.add(new Stack<Integer>());
 towers.add(new Stack<Integer>());

为什么这会返回真的?

  towers.get(1).equals(towers.get(2))

他们是否以某种方式为堆栈实现了equals以检查元素而不是默认行为,即引用

1 个答案:

答案 0 :(得分:3)

由于堆栈的equals合同。

http://docs.oracle.com/javase/7/docs/api/java/util/Stack.html

关注:

http://docs.oracle.com/javase/7/docs/api/java/util/Vector.html#equals(java.lang.Object)

即便:

  

当且仅当指定的Object也是List时,返回true,两个列表具有相同的大小,并且两个列表中的所有对应元素对都相等。 (如果(e1==null ? e2==null : e1.equals(e2)),则两个元素e1和e2相等。)

     

换句话说,如果两个列表包含相同顺序的相同元素,则它们被定义为相等。