检查对象列表是否包含指定的对象java

时间:2017-03-18 20:13:23

标签: java list object contains

假设几乎没有类扩展抽象类abc: -

public class mno extends abc { ... }
public class pqr extends abc { ... }
public class xyz extends abc { ... }

有一个对象列表,其中包含这些类的对象。

List<abc> f =new ArrayList<abc>();
f.add(new mno());
f.add(new pqr());
f.add(new xyz());

有没有办法检查列表f 是否包含类xyz的对象,列表中删除它。

我尝试了f.contains(xyz.class)或f.contains(new xyz())但是它返回了flase

3 个答案:

答案 0 :(得分:4)

如果你使用java 8,你可以这样做:

f.removeIf(xyz.class::isInstance);

答案 1 :(得分:1)

您可以使用Java 8 Streams。

List<abc> newList = new ArrayList<>(f)
            .stream()
            .filter(xyz.class::isInstance)
            .collect(Collectors.toList());

答案 2 :(得分:0)

您需要使用instanceof运算符来检查对象是否为特定类型,如下所示:

 Iterator<abc> iterator = f.iterator();
    while(iterator.hasNext()) {
       if(iterator.next() instanceof xyz) {
           iterator.remove();
       }
   }

此外,上面的代码使用Iterator安全地从列表中删除对象。

另外,我强烈建议您遵循类,变量等的Java命名约定,因为您的示例类名abc,xyz等非常差。