Eclipse显示视图并检查列表是否包含具有某些属性的对象

时间:2011-08-04 14:55:08

标签: java eclipse

我有

 Class ComplexObject {
      Complex() {}
      public String first;
      public String second;
 }

 List<ComplexObject> allObjects = fillListWithSomeData();

在“显示”视图中是否有某种方法可以检查allObjects列表是否包含第一个设置为“foobar”的字段的对象?

3 个答案:

答案 0 :(得分:1)

我想你需要这个:

for (ComplexObject obj : allObjects)
   if (obj.first.equals("foobar")) {
       //we have found one
   }

答案 1 :(得分:0)

除非您使用equals()字段在hashCode()课程中实施ComplexObjectfirst方法,否则您不能。

否则,您唯一的选择就是遍历列表并对字段值进行比较。

答案 2 :(得分:0)

对于任何类型和任何类型的比较,这是一个非常通用的解决方案:

public static <T> boolean containsSimilar(T toCompare, List<T> toSearch, Comparator<T> comp) {
   for (T item: toSearch) {
      if (comp.compare(toCompare, item) == 0)
          return true;
   }
   return false;
}

你会像这样使用它:

boolean contains = containsSimilar(lookingFOr, listOfObjects, 
   new Comparator<ComplexObject>() { 
      public int compare(ComplexObject one, ComplexObject two) {
         // your compare logic here
      }
      public boolean equals(Object o) { }
});

其中lookingFor是一个ComplexObject,其属性设置为您要查找的内容,listOfObjects是ComplexObject的列表。