Lambda表达式if-else语句

时间:2016-05-10 19:35:49

标签: java

您好我刚开始学习Lambda表达式,如何使用Lambda表达式编写它?

  public static void greaterThanFive(String str){
    if(str.length() > 5){
        System.out.println("String length is larger than 5 ");
    }else{
        System.err.println("String length less than 5");
    }

如果它只是一个if语句,我可以这样做:

Predicate<String> greaterThanFive = (s)-> s.length() > 5;

但我无法确定何时发出if-else声明。

2 个答案:

答案 0 :(得分:0)

Comparator<String> c = (String first, String second) -> {
if (first.length() < second.length()) return -1;
else if (first.length() > second.length()) return 1;
else return 0;
};

我相信这可以回答你的问题。有关更多信息,请阅读Java8以获得真正的不耐烦。这是一本非常好的书。

答案 1 :(得分:0)

使用块,您可以创建具有多个语句或大语句的lambda表达式(如if-else)。例如:

new Thread( () -> { // Btw, you can use java.lang.Runnable with a lambda
    System.out.println("A wild NEW THREAD appeared!"); // :)
    try {
        Thread.sleep(5000);
    } catch (InterruptedException e) {}
    System.out.println("Enemy NEW THREAD ran away!");
});

这意味着您所要做的就是将if-else包含在lambda的块中:

Consumer<String> greaterThanFive = (s) -> {
    // ...
};

请注意,块后面有分号。