我有一个Entity列表,所有实体都有唯一的名称,目前获取唯一值,我使用的是实体名称和实体对象的MAP。我不想仅仅为了过滤目的使用地图。
我找到了一个solution,但它使用的是Java-8。
Google Guava com.google.common.collect.Sets.filter()中有一个API,但它返回Set,在这种情况下,我必须得到第0个元素。
任何人都可以提出更好的方法。
答案 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;
}