使用 Java 找到与 属性 值匹配的唯一对象 7
find Unique Object matching a property value using Java 7
我有一个实体列表,所有实体都有唯一名称,目前要获得唯一值,我正在使用实体名称和实体对象的 MAP。我不想仅仅为了过滤目的而使用地图。
我找到了一个 ,但它的用法是 Java-8.
Google Guava com.google.common.collect.Sets.filter() 中有一个 API,但它 returns 集合,在这种情况下我必须得到第 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;
}
使用 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
});
);
类似这样的事情,可以解决。
我有一个实体列表,所有实体都有唯一名称,目前要获得唯一值,我正在使用实体名称和实体对象的 MAP。我不想仅仅为了过滤目的而使用地图。
我找到了一个
Google Guava com.google.common.collect.Sets.filter() 中有一个 API,但它 returns 集合,在这种情况下我必须得到第 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;
}
使用 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
});
);
类似这样的事情,可以解决。