Java 如何测试某个对象是否在列表中

Java 如何测试某个对象是否在列表中,java,Java,我正在将POJO添加到链接列表中,现在我想检查列表是否包含该对象。下面的代码不起作用,有什么建议吗 List<Object> data = new LinkedList<Object>(); FooBar obj = new FooBar(); data.add(obj); if (data.contains(FooBar.class)) { // true } List data=newlinkedlist(); FooBar obj=新FooBar()

我正在将POJO添加到链接列表中,现在我想检查列表是否包含该对象。下面的代码不起作用,有什么建议吗

List<Object> data = new LinkedList<Object>();

FooBar obj = new FooBar();

data.add(obj);

if (data.contains(FooBar.class)) {
    // true
}
List data=newlinkedlist();
FooBar obj=新FooBar();
添加数据(obj);
if(data.contains(FooBar.class)){
//真的
}
您试过了吗

if (data.contains(obj)) {
    // true
}
?

对于列表中的任何元素,如果
element.equals(参数)
为真,则列表的方法将仅返回
true

编辑:如果您试图测试列表中是否有
FooBar
的任何实例,并且您正在使用Java 8,则可以执行以下操作:

if (strs.stream().anyMatch(e -> e instanceof FooBar)) {
    // true
}

首先,您需要执行
data.contains(obj)
,即传递实际对象进行比较

ArrayList
实现列表界面。如果查看at
contains
方法,您将看到它使用
equals()
方法来计算两个对象是否相同

因此,要使其工作,您需要覆盖
equals
方法,如:

@Override
public boolean equals(Object obj) {
 ..
}

您必须重写POJO对象中的equals方法

if you just do contains将始终返回false,因为对象永远不会相等。因此,必须重写POJO对象

您可以看看这个关于如何重写equals方法的问题:

有关详细信息,请参阅:

你想在这里做什么?您是否试图查看
data
是否包含对象
obj
,或者您是否试图判断它是否包含
FooBar
类型的对象?如果列表中包含foobari类型的对象,请参阅:@Purpl3Paul,对于这种情况,我更新了我的答案…谢谢,如果我在另一个类中创建对象,并将该对象添加到所述类中的列表中,那么这将起作用。父类将接收列表,然后需要测试对象是否在列表中。我将如何测试它?@Purpl3Paul在每个场景中,您肯定会使用FooBar对象进行比较,这是可以使用的。在没有对象的情况下,您将如何进行比较?这是为了检查是否存在特定对象。要检查是否存在指定类的任何对象,请参阅:如果我在子类中创建并实例化一个简单对象,并将该对象添加到子类中的列表中,然后将该列表返回给父类,那么如何测试返回的列表是否具有简单对象的实例。我没有在父类中创建任何简单对象。