आप इसके लिए एक पूर्वानुमान लागू करने वाले अपाचे कॉमन्स संग्रह का उपयोग कर सकते हैं।
http://commons.apache.org/collections/apidocs/org/apache/commons/collections/CollectionUtils.html
नमूना:
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);
}
}
कुछ नमूना यहां पाया जा सकता: http://apachecommonstipsandtricks.blogspot.de/2009/01/examples-of-functors-transformers.html
और आप अधिक सामान्य कुछ, एक विशेष क्षेत्र या संपत्ति के एक मूल्य के निरीक्षण की तरह की जरूरत है आप कुछ ऐसा कर सकते हैं:
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;
}
}
}
यह एक उम्मीद मूल्य के लिए एक विशिष्ट संपत्ति की तुलना कर सकते हैं, और उपयोग कुछ की तरह होगा:
Collection filtered = CollectionUtils.select(users, new MyPredicate("name", "User Name 2"));
स्रोत
2012-06-11 12:57:11
संपत्ति = क्षेत्र चर? – dacwe
@ डेकवे, हाँ, यही मेरा मतलब है, क्षमा करें। –
आप 'जेनेरिक विधि' कैसे समझते हैं? –