Bạn có thể sử dụng bộ sưu tập apache commons thực hiện một Predicate cho nó.
http://commons.apache.org/collections/apidocs/org/apache/commons/collections/CollectionUtils.html
mẫu:
package snippet;
import java.util.Arrays;
import java.util.Collection;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Predicate;
public class TestCollection {
public static class User {
private String name;
public User(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User [name=" + name + "]";
}
}
public static void main(String[] args) {
Collection<User> users = Arrays.asList(new User("User Name 1"), new User("User Name 2"), new User("Another User"));
Predicate predicate = new Predicate() {
public boolean evaluate(Object object) {
return ((User) object).getName().startsWith("User");
}
};
Collection filtered = CollectionUtils.select(users, predicate);
System.out.println(filtered);
}
}
Một vài mẫu có thể được tìm thấy ở đây: http://apachecommonstipsandtricks.blogspot.de/2009/01/examples-of-functors-transformers.html
Và nếu bạn cần một cái gì đó chung chung hơn, như kiểm tra một giá trị của một trường hoặc tài sản cụ thể bạn có thể làm điều gì đó như:
public static class MyPredicate implements Predicate {
private Object expected;
private String propertyName;
public MyPredicate(String propertyName, Object expected) {
super();
this.propertyName = propertyName;
this.expected = expected;
}
public boolean evaluate(Object object) {
try {
return expected.equals(PropertyUtils.getProperty(object, propertyName));
} catch (Exception e) {
return false;
}
}
}
Điều đó có thể so sánh một tài sản cụ thể cho một giá trị kỳ vọng, và việc sử dụng sẽ là một cái gì đó như:
Collection filtered = CollectionUtils.select(users, new MyPredicate("name", "User Name 2"));
Nguồn
2012-06-11 12:57:11
tài sản = biến lĩnh vực? – dacwe
@dacwe, vâng, đó là ý tôi, xin lỗi. –
Làm thế nào để bạn hiểu 'phương pháp chung'? –