Lambda Expression无效,终止

use*_*524 5 java lambda java-8 functional-interface

使用lambda表达式编写了java8程序,它没有被执行而是在lambda表达式中被终止,没有例外

    import java.util.ArrayList;
    import java.util.List;
    import java.util.function.BiConsumer;

    public class BiConsumerTest {


    public static void main(String[] args) {
        try{


        List<String> list1 = new ArrayList<String>();

        list1.add("A");
        list1.add("B");
        list1.add("V");


    List<String> list2 = new ArrayList<String>();

        list2.add("J");
        list2.add("G");
        list2.add("P");

        BiConsumer<List<String>  , List<String>> bc = (lista, listb) ->{
                lista.stream().forEach( System.out::print);

            };


        }catch(Exception ex){
            ex.printStackTrace();
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

预计会在列表中打印字符串

Ous*_* D. 3

这是因为您没有调用 的BiConsumer方法accept。调用如下:

  bc.accept(list1, list2);
Run Code Online (Sandbox Code Playgroud)

此外,请注意,不必stream只是为了调用而调用,而是直接在列表上forEach调用:forEach

 lista.forEach(System.out::print);
Run Code Online (Sandbox Code Playgroud)

另一件事是您BiConsumer没有使用第二个列表,这可能是因为您还没有完成整个逻辑的实现,在这种情况下这是可以理解的。

完整代码:

BiConsumer<List<String>, List<String>> bc = (lista, listb) -> {
    lista.forEach(System.out::print);
    // listb.forEach(System.out::print);
};
bc.accept(list1, list2);
Run Code Online (Sandbox Code Playgroud)