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

使用Java 7查找与属性值匹配的唯一对象,java,list,collections,java-7,Java,List,Collections,Java 7,我有一个实体列表,所有实体都有唯一的名称,目前为了获得唯一的值,我使用实体名称和实体对象的映射。我不想使用地图只是为了过滤的目的 我找到了一个,但它使用Java-8 Google Guava com.Google.common.collect.Sets.filter()中有一个API,但它返回Set,在本例中,我必须获取第0个元素 有人能推荐更好的方法吗。试试下面的方法: public static Entity findByName(String name, List<Entity>

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

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

Google Guava com.Google.common.collect.Sets.filter()中有一个API,但它返回Set,在本例中,我必须获取第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;
    }
公共静态实体findByName(字符串名称,列表实体){
if(实体!=null&&name!=null){
对于(实体e:实体){
if(name.equals(e.getName())){
返回e;
}
}
}
返回null;
}
尝试以下方法:

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;
    }
公共静态实体findByName(字符串名称,列表实体){
if(实体!=null&&name!=null){
对于(实体e:实体){
if(name.equals(e.getName())){
返回e;
}
}
}
返回null;
}

使用映射方法可以减少查找时间,但会占用内存,从而为您带来时间优势

如果您对番石榴持开放态度,请尝试以下方式:

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
  });
);
Optional result=FluentIterable.from(entityList).firstMatch(新谓词(){
@凌驾
公共布尔应用(实体){
return entity.getName().equals(input);//输入可以来自函数定义中的变量
});
);

类似这样的方法可以解决问题。

使用映射方法可以减少查找时间,但会占用内存,从而为您带来时间优势

如果您对番石榴持开放态度,请尝试以下方式:

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
  });
);
Optional result=FluentIterable.from(entityList).firstMatch(新谓词(){
@凌驾
公共布尔应用(实体){
return entity.getName().equals(input);//输入可以来自函数定义中的变量
});
);

类似这样的问题可以解决。

我想知道你是否尝试过任何方法。(重复浏览列表;如果名称匹配,则中断。)@Mritunja我想他/她想要一种调用方式,或者至少是一种简短的方式,正如我读到的“Google Guava com.Google.common.collect.Sets.filter()中有一个API”“@Mritunjay:暂时停止思考,重新阅读这篇文章。停止思考,可能有助于提高注意力,你可能会理解我尝试了一些东西,然后发布了它。我想知道你是否尝试过任何东西。(遍历列表;如果名称匹配,请打断。)@Mritunja我想他/她想要一种调用方式,或者至少是一种简短的方式,正如我读到的“Google Guava com.Google.common.collect.Sets.filter()中有一个API,但它返回Set,在这种情况下,我必须获得第0个元素。”@伊滕杰先生:暂时停止疑惑,重新阅读这篇文章。停止疑惑,可能有助于提高注意力,你可能会明白我已经尝试了一些东西,然后发了出来谢谢你的回复谢谢你的回复