【问题标题】:find Unique Object matching a property value using Java 7使用 Java 7 查找与属性值匹配的唯一对象
【发布时间】:2018-06-27 04:29:14
【问题描述】:

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

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

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

谁能提出更好的方法。

【问题讨论】:

  • 我想知道您是否尝试过任何方法。 (遍历列表;如果名称匹配则中断。)
  • @Mritunja 我想他/她想要一种单一的调用方式或至少一种短的方式,因为我读到“Google Guava com.google.common.collect.Sets.filter 中有一个 API (),但它返回 Set,在这种情况下,我必须获取第 0 个元素。”
  • @Mritunjay:暂时不要再想知道并再次阅读该帖子。停止疑惑,可能有助于提高注意力,您可能会理解我已经尝试过然后发布了它

标签: java list collections java-7


【解决方案1】:

使用 Map 方法可以节省时间,因为查找时间会减少,但会占用内存。

如果您对 Guava 持开放态度,请尝试以下方法:

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
  });
);

这样的,可以解决。

【讨论】:

  • 感谢您的回复
【解决方案2】:

试试下面的方法:

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;
    }

【讨论】:

    猜你喜欢
    • 2020-06-20
    • 2023-04-08
    • 2022-09-23
    • 1970-01-01
    • 2013-10-26
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多