java - 这段代码有什么问题吗?它没有过滤集合!

标签 java generics

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/

相关文章:

java - Adobe Experience Manager 路径的完整 URL

java - 从需要 Java 1.8 的 jar 创建 bundle 应用程序

generics - Kotlin泛型和TypeVariable

java - 使用 gson 反序列化嵌套的泛型类

c# - 用于类型推断的通用身份函数

java - 有没有办法在通过 Selenium 加载后将一些js添加到所有页面中?

java - 检测 JTextArea 上的悬停

java - System.loadLibrary 不起作用。链中第二个库的 UnsatisfiedLinkError

java - 为什么使用类型参数调用非参数化方法不会出错?

Scala泛型类型约束