Java-関数式プログラミング、Lambda式
Lambda式
Java標準ライブラリのjava.lang.Runnableとjava.util.Comparatorは、典型的な関数インタフェースです.
Comparatorインタフェース-関数ソート
Runnableインタフェース
関数インタフェースFunction
Java SE 8が追加されました java.util.function パッケージは、開発で使用できる関数式インタフェースです.開発者は、新しい関数インタフェースを作成することもできます.
ブログ参照
公式ドキュメント
メソッドと構築メソッドの参照
public void expr1() {
/*
* , lambda 、–>
*/
Arrays.asList("a", "b", "c").forEach(e -> System.out.println(e));
Arrays.asList(1, 2, 3).forEach((Integer e) -> {
e *= 2;
System.out.println(e);
});
}
Java標準ライブラリのjava.lang.Runnableとjava.util.Comparatorは、典型的な関数インタフェースです.
Comparatorインタフェース-関数ソート
public void expr2() {
/*
* 1. Lambda
* 2.
* 3. lambda , return
*/
List list = Arrays.asList(5, 7, 2, 3);
//Lambda “(x, y) -> y - x” java.util.Comparator
// list.sort((e1, e2) -> e1.compareTo(e2)); //
list.sort((e1, e2) -> e2.compareTo(e1)); //
System.out.println(list);
}
Runnableインタフェース
import org.junit.Test;
public class ThreadUseLambda {
/*
* :
* Java , lambda
* :
* Java java.lang.Runnable java.util.Comparator
*/
public void sum(int a, int b) {
System.out.println(a+b);
}
@Test
public void runThreadUseLambda() {
// 1
new Thread(() -> {
sum(1, 3);
}).start();
// 2
new Thread(() -> {
sum(2, 4);
}).start();
}
}
関数インタフェースFunction
Java SE 8が追加されました java.util.function パッケージは、開発で使用できる関数式インタフェースです.開発者は、新しい関数インタフェースを作成することもできます.
package redis.practice;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Function;
public class CollectionUtils {
/*
* map :
* : input; processor -> Function -> T, ; R,
*/
public static List map(List input, Function processor) {
ArrayList result = new ArrayList();
for (String obj : input) {
// Function apply ->
result.add(processor.apply(obj));
}
return result;
}
public static void main(String[] args) {
List input = Arrays.asList(new String[] {"apple", "orange", "pear"});
List lengths = CollectionUtils.map(input, (String v) -> String.valueOf(v.length()));
List uppercases = CollectionUtils.map(input, (String v) -> v.toUpperCase());
System.out.println(lengths);
System.out.println(uppercases);
}
}
ブログ参照
公式ドキュメント
メソッドと構築メソッドの参照
List input = Arrays.asList(new String[] {"apple", "orange", "pear"});
input.forEach((v) -> System.out.println(v));
input.forEach(System.out::println);
List dateValues = Arrays.asList(new Long[] {0L, 1000L});
List dates = CollectionUtils.map(dateValues, Date::new);