如何测试对象列表是否包含包含特定字符串作为属性的对象?

时间:2015-11-12 08:02:10

标签: java

我试图弄清楚如何测试一个对象列表是否包含一个包含特定字符串作为属性的对象。

所以这是我的对象列表

ArrayList<mObject> objectsList;

这是我的mObject

public class mObject {

    String x = "True";

}

在这里,我尝试进行某种测试

if(ObjectsList.contains(object.x == "True")){
    return true;
} else {
    return false;
}

我知道语法有点荒谬,但我怎样才能使它在技术上正确?

4 个答案:

答案 0 :(得分:0)

对于Java 8,您可以使用

objectsList.stream().anyMatch(myObject -> myObject.x.equals("True"));

请查看有关命名变量(小写开始和驼峰大小写)和类(大写开始)的代码标准

PS:因为你的变量是一个带有“True”值的字符串 - 你确定不想要一个布尔值吗?

答案 1 :(得分:0)

Java 8:

List<mObject> list = ObjectsList.stream().filter(obj -> obj.x.equals( "True")).collect(Collectors.toList()).;
if (list.size() != 1) {
    return false;
} else {
    return true;
}

请观察java命名约定

答案 2 :(得分:0)

我重写equals()方法以便能够使用.contians(),因为它使用equals()比较对象,因为您的列表是List<mObject>(自定义对象列表)所以我有覆盖.equals()以便能够使用.contains()

public class mObject {
    private String x = "True";
    public String getX(){
      return x;
    }
    public void setX(String x){
      this.x=x;
    }
    @Override
    public boolean equals(Object obj) {
       if (obj == null) {
           return false;
       }
       if (getClass() != obj.getClass()) {
           return false;
       }
       final mObject other = (ttt) obj;
       if (!Objects.equals(this.x, other.x)) {
           return false;
       }
       return true;
   }
}

进行测试: -

if(ObjectsList.contains(object) && object.getX().equals("True")){
   return true;
} else {
    return false;
}

比较字符串时,请查看==.equals()之间的区别 来自thisthat链接

答案 3 :(得分:0)

对于Java 8的previuos版本:

public class MObject {

    private String x = "True";

    public String getX() {
        return x;
    }

    public void setX(String x) {
        this.x = x;
    }

}

您可以遍历列表:

ArrayList<MObject> objectsList; //Init your object list.

for(MObject object : objectsList) {
    if(object.getX().equals("True")) {
        return true;
    } else {
        return false;
    }
 }