Java 8 lambda 错误 : filter stream by reduced filter collection THEN map THEN collect

标签 java lambda java-8

如何编译第二种方法? 我使用谓词归约的解决方案

predicates.stream().reduce(Predicate::and).orElse(x -> true)

我从以下主题得到这个解决方案:How to apply multiple predicates to a java.util.Stream?

你知道答案,我敢肯定:)

import org.junit.Test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;

public class StreamTest {
    /**
     * This one works
     */
    @Test
    public void should_filter_map_collect__filterByPredicate() {
        List<String> strings = Arrays.asList("AA", "AB", "BA", "BB");
        Predicate<String> firstCharIsA = s -> s.charAt(0) == 'A';

        List<String> l = strings.stream()
                .filter(firstCharIsA)
                .map(s -> "_" + s + "_")
                .collect(Collectors.toList());
    }

    /**
     * Compilation Error:(43, 25) java: incompatible types: java.lang.Object cannot be converted to java.util.List<java.lang.String>
     */
    @Test
    public void should_filter_map_collect__filterByReducedPredicates() {
        List<String> strings = Arrays.asList("AA", "AB", "BA", "BB");
        Predicate<String> firstCharIsA = s -> s.charAt(0) == 'A';

        List<Predicate> predicates = new ArrayList<>();
        predicates.add(firstCharIsA);

        List<String> l = strings.stream()
                .filter(predicates.stream().reduce(Predicate::and).orElse(x -> true))
                .map(s -> "_" + s + "_")
                .collect(Collectors.toList());
    }
}

最佳答案

改变

List<Predicate> predicates = new ArrayList<>();

List<Predicate<String>> predicates = new ArrayList<>();

为我解决了错误。

关于Java 8 lambda 错误 : filter stream by reduced filter collection THEN map THEN collect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31513770/

相关文章:

java - 如何获取arrayList的重复元素和非重复元素?

java - Android RecyclerView 滚动性能

c# - Lambda 不同选择

c++ - lambda 中引用捕获对象的类型

java - java 8 中的并行流与 Completablefuture

java - InvalidKeySpecException : How do I extract a private key from a . 文件?

c# - 获取 lambda 表达式的 MethodInfo

java - IntelliJ 使用 Java 8 SDK 为 Java 7 JRE 编译

java - Android Studio 中的方法引用

java - 迭代 Java 中的字符串列表