【发布时间】:2015-03-24 07:10:35
【问题描述】:
我有一种过滤方法,使用谓词接口在某些条件下过滤列表。
public static <T> List<T> filter(List<T> list,Predicate<T> predicate){
List<T> result=new ArrayList<T>();
for(T t:list){
if(predicate.test(t)){
result.add(t);
}
}
return result;
}
我有一个整数数组 List 作为 List arraIntegerList=Arrays.asList(1,2,3,3,4);
调用上述方法时出现编译错误。
System.out.println(filter(arraIntegerList,(int i)->(i>2)));
为什么它给出了编译错误,而与 String 相同的列表工作正常。
【问题讨论】:
-
您的方法可以简单地实现为
return list.stream().filter(predicate).collect(Collectors.toList());,或者,如果它必须是ArrayList,您可以使用return list.stream().filter(predicate).collect(Collectors.toCollection(ArrayList::new));。