MCa*_*els 0 java collections list arraylist
在Java中我有两个列表:
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);
Run Code Online (Sandbox Code Playgroud)
当我在第一个列表中执行以下containsAll方法时:
sats.containsAll(sats2); //Returns TRUE!
Run Code Online (Sandbox Code Playgroud)
它返回true.但是第一个List(sats)只包含1个项目,第二个列表包含2.因此,第一个列表(sats)甚至不可能包含第二个列表(sats2)中的所有项目.知道为什么或者这是Java JDK中的错误?
我在另一个StackOverflow问题中读到,这不是执行此类操作的最高效方式,所以如果有人建议如何使其更高效,那就太棒了!
提前致谢!
正如@Progman指出的那样,你可能会覆盖这个equals方法Satellite.
下面的程序打印false.
import java.util.*;
class Satellite {
}
class Test {
public static void main(String[] args) {
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);
System.out.println(sats.containsAll(sats2));
}
}
Run Code Online (Sandbox Code Playgroud)
我建议您打印两个列表的内容,并检查内容是否符合您的预期.
| 归档时间: |
|
| 查看次数: |
3125 次 |
| 最近记录: |