public class CollectionsFilter {
public static void main(String[] args) {
List<Integer> list = Arrays.asList(new Integer[] { 1, 2, 3, 4, 5, 6, 7,
8, 9, 10 });
Collection<Integer> evenNumbers = Utils.filter(list,
new Predicate<Integer>() {
public boolean apply(Integer i) {
if (i % 2 == 0) {
return true;
}
return false;
}
});
Collection<Integer> oddNumbers = Utils.filter(list,
new Predicate<Integer>() {
public boolean apply(Integer i) {
if (i % 2 != 0) {
return true;
}
return false;
}
});
System.out.println("EVEN Numbers > " + evenNumbers);
System.out.println("ODD Numbers > " + oddNumbers);
}
}
我的Utils.filter()方法是:
public static <T> Collection<T> filter(Collection<T> target,
Predicate<T> predicate) {
Collection<T> filteredCollection = new ArrayList<T>();
for (T t : filteredCollection) {
if (predicate.apply(t)) {
filteredCollection.add(t);
}
}
return filteredCollection;
}
和Prdicate:
public interface Predicate<T> {
public boolean apply(T type);
}
答案 0 :(得分:5)
首先,不要自己编写这种代码。那是Google Collections。
话虽如此:尝试在target
方法中迭代filteredCollection
而不是filter()
,这应该可以修复它。
答案 1 :(得分:4)
那是因为你的Util.filter运行在它开头创建的空的filteredCollection。