我有
Class ComplexObject {
Complex() {}
public String first;
public String second;
}
List<ComplexObject> allObjects = fillListWithSomeData();
在“显示”视图中是否有某种方法可以检查allObjects列表是否包含第一个设置为“foobar”的字段的对象?
答案 0 :(得分:1)
我想你需要这个:
for (ComplexObject obj : allObjects)
if (obj.first.equals("foobar")) {
//we have found one
}
答案 1 :(得分:0)
除非您使用equals()
字段在hashCode()
课程中实施ComplexObject
和first
方法,否则您不能。
否则,您唯一的选择就是遍历列表并对字段值进行比较。
答案 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的列表。