代码之家  ›  专栏  ›  技术社区  ›  Jla

使用集合.java.()的对象的Java测试特定属性

  •  3
  • Jla  · 技术社区  · 16 年前

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

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

    4 回复  |  直到 16 年前
        1
  •  3
  •   David M    16 年前

    您将不得不迭代并进行比较。

        2
  •  3
  •   Oliver Michels    16 年前

    考虑使用地图。

    Map<String,myObjects> myMap = new HashMap<String,myObjects>();
    myMap.put(myObject.name,myObject);
    
        3
  •  2
  •   Guillaume    16 年前

    您可以使用Apache集合,它们提供了一系列方便的功能,包括谓词:

    public class MyPredicate implements Predicate {
      public boolean evaluate(Object input) {
        return (MyObject).name = "myName";
      }
    }
    

    然后您可以使用以下方法测试您的收藏:

       CollectionUtils.find(myCollection, new MyPredicate());
    

    这将返回与谓词匹配的第一个对象,如果没有匹配的对象,则返回空值。

        4
  •  0
  •   Eyal Schneider    16 年前

    如果您可以控制如何收集数据,那么您也可以在该属性上使用某种“反向索引”;索引可以是名称与具有该名称的一组myObjects之间的映射。这样,您就可以有效地检索具有给定名称的所有项目。您可以用同样的方法添加更多索引。