你如何在java 8中使用lambda表达式中的条件?

时间:2017-05-07 18:00:53

标签: java lambda

我是编程的初学者,我想知道如何用条件编写lambda表达式。

public interface MathInterface {

    public int retValue(int x);

}

public class k1{
public static void main(String [] args) {
MathInterface f1 = (int x) -> x + 4; // this is a normal lambda expression
    }
}

上面的代码应代表数学函数:

f(x)= x + 4。

所以我的问题是如何编写一个覆盖此函数的lambda表达式:

f(x)=

x / 2(如果x可以除以2)

((x + 1)/ 2)(否则)

任何帮助表示赞赏:)

编辑:来自@ T.J的回答。克劳德是我正在寻找的东西。

  

MathInteface f1 =(int x) - > (x%2 == 0)? x / 2:(x + 1)/ 2;

2 个答案:

答案 0 :(得分:7)

  

所以我的问题是如何编写一个覆盖此函数的lambda表达式...

你要么写一个带有块体({})的lambda(我称之为“详细的lambda”)并使用return

MathInteface f1 = (int x) -> {
    if (x % 2 == 0) {
        return x / 2;
    }
    return (x + 1) / 2;
};

或者您使用条件运算符:

MathInteface f1 = (int x) -> (x % 2 == 0) ? x / 2 : (x + 1) / 2;

(或两者)。

lambda tutorial

中的更多详细信息

答案 1 :(得分:3)

对于该特定功能,三元组是可能的。

(int x) -> x % 2 == 0 ?  x/2 : (x+1)/2;

否则,制作一个块

(int x) -> {
    // if... else 
} 

在其中,您return的值为