在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