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;
}
和谓词:
public interface Predicate<T> {
public boolean apply(T type);
}
最佳答案
首先,不要自己编写这种代码。有Google Collections为此。
话虽如此:尝试在 filter()
方法中迭代 target
而不是 filteredCollection
,这应该可以修复它。
关于java - 这段代码有什么问题吗?它没有过滤集合!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1739451/