使用Java 7查找与属性值匹配的唯一对象

时间:2018-01-18 07:04:07

标签: java list collections java-7

我有一个Entity列表,所有实体都有唯一的名称,目前获取唯一值,我使用的是实体名称和实体对象的MAP。我不想仅仅为了过滤目的使用地图。

我找到了一个solution,但它使用的是Java-8。

Google Guava com.google.common.collect.Sets.filter()中有一个API,但它返回Set,在这种情况下,我必须得到第0个元素。

任何人都可以提出更好的方法。

2 个答案:

答案 0 :(得分:2)

使用Map方法可以减少查找时间,但是会使用内存。

如果您对番石榴开放,请尝试以下方法:

Optional<Entity> result = FluentIterable.from(entityList).firstMatch(new Predicate<Entity>() {
  @Override
  public boolean apply(Entity entity) {
    return entity.getName().equals(input);  //Input can be from variable in function definition
  });
);

这样的东西,可以解决。

答案 1 :(得分:0)

尝试以下方法:

public static Entity findByName(String name, List<Entity> entities) {
        if (entities!= null && name != null) {
            for (Entity e : entities) {
                if (name.equals(e.getName())) {
                    return e;
                }
            }
        }
        return null;
    }