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以检查元素而不是默认行为,即引用
答案 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相等。)换句话说,如果两个列表包含相同顺序的相同元素,则它们被定义为相等。