【发布时间】:2014-10-23 05:48:36
【问题描述】:
public interface Filter<M> {
boolean match(M m);
public static <T> Collection<T> filter(Collection<T> collection, Filter<T> filter) {
return collection.stream().filter(filter::match).collect(Collectors.toList());
}
////////////////////////////////////////////////////////////////
public static void main(String[] args) {
ArrayList<Integer> intList = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8));
System.out.println(intList);
List<Integer> list = filter(intList, null);
System.out.println(list);
}
}
我正在学习 java 8 流功能,这是我有问题的代码...
我不知道为什么参数 intList 不匹配 filter() 方法。 Java 应该知道<T> 在这里是Integer,对吧?
【问题讨论】:
-
请将您的代码发布为代码,而不是屏幕截图。你在这里的做法让我们更难自己重现问题。
-
附带说明:如果您不修改
intList,如您的代码示例,则无需将Arrays.asList的结果包装成ArrayList,它 是已经是List。另一方面,如果你有一个像ArrayList这样的可变列表并且你不再需要intList的原始内容,那么每个Collection上都有removeIf(Predicate),允许就地过滤。无论哪种情况,您都可以简化代码……
标签: java collections java-8