在Java中,如何测试一个对象集合是否包含一个对象,具体取决于它的一个属性。
例如,我想测试Collection<myObjects>
是否包含myObjects的实例,其myObjects.name =“myName”。
答案 0 :(得分:3)
您必须进行迭代并进行比较。
答案 1 :(得分:3)
考虑使用地图。
Map<String,myObjects> myMap = new HashMap<String,myObjects>();
myMap.put(myObject.name,myObject);
答案 2 :(得分:2)
您可以使用apache集合,它们提供了许多方便的功能,包括谓词:
public class MyPredicate implements Predicate {
public boolean evaluate(Object input) {
return (MyObject).name = "myName";
}
}
然后您可以使用以下方式测试您的收藏:
CollectionUtils.find(myCollection, new MyPredicate());
这将返回与谓词匹配的第一个对象,如果没有匹配,则返回null。
答案 3 :(得分:0)
如果您可以控制数据的收集方式,那么您也可以在该属性上使用某种“反向索引”;索引可以是name与具有该名称的一组myObject之间的映射。这样,您就可以有效地检索具有给定名称的所有项目。您可以以相同的方式添加更多索引。