在Java中我有兩個列表:我在java.util.ArrayList.containsAll中發現了一個錯誤嗎?
List<Satellite> sats = new ArrayList<Satellite>();
List<Satellite> sats2 = new ArrayList<Satellite>();
Satellite sat1 = new Satellite();
Satellite sat2 = new Satellite();
sats.add(sat1);
sats2.add(sat1);
sats2.add(sat2);
當我做的第一名單上有以下containsAll方法:
sats.containsAll(sats2); //Returns TRUE!
返回TRUE。但是,第一個列表(sats)只包含1個項目,第二個列表包含2.因此,第一個列表(sats)甚至不可能包含第二個列表(sats2)中的所有項目。任何想法爲什麼或者這是Java JDK中的錯誤?
我讀過另一個StackOverflow問題,這不是執行此類操作的最高性能方法,所以如果任何人有關於如何使其性能更好的建議,那將是非常棒的!
在此先感謝!
你重寫了你的Satellite類的'equals'方法嗎?如果是顯示我們的代碼(也可能是'hashCode'方法) – Progman 2011-04-18 20:24:56
[編程的第一條規則;它始終是你的錯誤](http://www.codinghorror.com/blog/2008/03/the-first-rule-of-programming-its-always-your-fault.html) – 2011-04-18 20:28:50
hashCode在這裏並不重要。 ..但等於肯定。 – MeBigFatGuy 2011-04-18 20:54:14