Итак, я пытаюсь пройти этот тест:
public void testCountWithCondition() {
List<Integer> data = Arrays.asList(1, 3, 8, 4, 6);
int count = streamer.count(data, x -> x % 3 == 0);
assertEquals(2, count);
}
Мне очень трудно понять, как создать метод count, который может принимать лямбда-выражение в качестве аргумента. Я видел другие сообщения, в которых говорилось, что вам нужно создать класс интерфейса, но как мне запрограммировать его, чтобы он мог принимать любое лямбда-выражение? Кроме того, в задании конкретно говорится, что мне нужно использовать потоки. Спасибо!
Вам не нужно делать новый интерфейс, вы можете использовать один из существующих. Посмотрите на определение Stream.filter.




ваш метод должен принимать предикат . все лямбды, которые принимают один аргумент и возвращают логическое значение, реализуют этот интерфейс. вызов предиката выполняется путем выполнения его метода test().
пример:
public <T> long count(Collection<T> collection, Predicate<T> filter) {
return collection.stream()
.filter(filter)
.count();
}
Что такое
streamer? Этоdata.stream()?