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 потокового
Я учусь о Java 8 функции потоковой передачи, и это мой проблематичный код ...
Я не знаю, почему аргумент intList
не соответствует filter()
метода , Java должна знать <T>
is Integer
здесь, правильно?
Пожалуйста, разместите свой код * как код *, а не как снимок экрана. То, как вы это сделали, намного усложняет задачу для нас воспроизвести проблему. –
@JonSkeet Edited. – JSPDeveloper01
В качестве примечания: если вы не изменяете 'intList', как в вашем примере кода, нет необходимости обертывать результат' Arrays.asList' в 'ArrayList', он * is * уже является' List '. С другой стороны, если у вас есть изменяемый список, такой как 'ArrayList', и вам больше не требуется исходное содержимое' intList', на '' сборке ''' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'позволяет на месте фильтровать. В любом случае вы можете упростить свой код ... – Holger