[TOC]java
最近在看一些開源項目的源碼,函數式編程風格的代碼無處不在,因此得要好好學一下了。編程
無參數:app
Runnable noArguments = () -> System.out.println("Hello World!"); noArguments.run();
一個參數:ide
UnaryOperator<Boolean> oneArgument = x -> !x; System.out.println(oneArgument.apply(true));
多行語句:函數式編程
Runnable multiStatement = () -> { System.out.print("Hello"); System.out.println(" World!"); };
兩個參數:函數
BinaryOperator<Integer> add = (x, y) -> x + y; add.apply(1, 2);
顯式類型:code
BinaryOperator<Integer> addExplicit = (Integer x, Integer y) -> x + y;
每一個函數接口列舉一些例子來講明。orm
判斷一個數是否爲偶數。接口
Predicate<Integer> isEven = x -> x % 2 == 0; System.out.println(isEven.test(3)); // false
打印字符串。ip
Consumer<String> printStr = s -> System.out.println("start#" + s + "#end"); printStr.accept("hello"); // start#hello#end List<String> list = new ArrayList<String>(){{ add("hello"); add("world"); }}; list.forEach(printStr);
將數字加1後轉換爲字符串。
Function<Integer, String> addThenStr = num -> (++num).toString(); String res = addThenStr.apply(3); System.out.println(res); // 4
建立一個獲取經常使用SimpleDateFormat的Lambda表達式。
Supplier<SimpleDateFormat> normalDateFormat = () -> new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf = normalDateFormat.get(); Date date = sdf.parse("2019-03-29 23:24:05"); System.out.println(date); // Fri Mar 29 23:24:05 CST 2019
實現一元操做符求絕對值。
UnaryOperator<Integer> abs = num -> -num; System.out.println(abs.apply(-3)); // 3
實現二元操做符相加。
BinaryOperator<Integer> multiply = (x, y) -> x * y; System.out.println(multiply.apply(3, 4)); // 12