Java使用Collection.contains()测试对象的特定属性

时间:2010-04-23 09:55:58

标签: java

在Java中,如何测试一个对象集合是否包含一个对象,具体取决于它的一个属性。

例如,我想测试Collection<myObjects>是否包含myObjects的实例,其myObjects.name =“myName”。

4 个答案:

答案 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之间的映射。这样,您就可以有效地检索具有给定名称的所有项目。您可以以相同的方式添加更多索引。