2014-02-15 31 views
-1
towers=new ArrayList<>(); 
towers.add(new Stack<Integer>()); 
towers.add(new Stack<Integer>()); 
towers.add(new Stack<Integer>()); 

爲什麼這將返回true?不同的參考堆棧返回等於真

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

難道他們不知何故執行等於爲堆棧檢查元素,而不是它是參考

回答

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)

機智:

返回true,當且僅當指定的對象也是一個列表,兩個列表具有相同的大小,並且兩個列表中的所有相應元素對都是相等的。 (如果(e1==null ? e2==null : e1.equals(e2)),則兩個元素e1和e2相等。)

換句話說,如果兩個列表按相同順序包含相同元素,則定義爲相等。

+0

謝謝,這就是我的想法。 –

+0

@NathanDrake你不必一想就可以,你可以看看它! –