jdk8 Function
生活随笔
收集整理的這篇文章主要介紹了
jdk8 Function
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
例子 1:
// 定義function Function<String, String> fun = parm -> { // 這里是定function中的邏輯 return String.valueOf(parm + "xing"); };Function<String, String> fun1 = parm -> { // 這里是定function中的邏輯 return String.valueOf(parm + "sheng"); }; /* * @param a 第一個執行 * @param fun 第三個 * @param fun1 第二個 * @return */ public static String test3(String a, Function<String, String> fun,Function<String, String> fun1) { return fun.compose(fun1).apply(a); } // compose 源碼 default <V> Function<V, R> compose(Function<? super V, ? extends T> before) {Objects.requireNonNull(before);return (V v) -> apply(before.apply(v)); } System.out.println(test3("zhang",fun,fun1)); // 輸出結果 zhangshengxing?
?
?
// 例子2 list 轉map
// 初始化 測試數據List<User>userList=new ArrayList<>(); userList.add(User.builder().age(10).name("zhang").build()); userList.add(User.builder().age(11).name("wang").build()); userList.add(User.builder().age(12).name("li").build()); userList.add(User.builder().age(13).name("zhao").build()); userList.add(User.builder().age(14).name("sun").build()); /** * 注:Flux 是 reactor 框架中的類,表示0~1個異步序列。Flux.fromIterable(a) 從a中獲取一個 Iterable遍歷器從a中獲取一個 Iterable遍歷器,并使用collectMap(fun,fun1) 函數式方法,block 是堵塞 直到遍歷完成Map<V,R> : V 是map的key, R map的值例子2 是將list 轉為 map<name,age> 形式.
調用 test7(userList,User::getName,User::getAge) 此時,User::getName 是 fun的執行邏輯,User::getAge 是 fun1 的執行邏輯。這兩個方法引用
就是從遍歷的User中取出name和age 。 Fun<K,V> V 為出參,也就是map 的 key Fun1<K,R> R為出參,也就是map 的 value Fun,fun1 必須要和 map<V,R> 對應
* @param a 數據源 * @param fun key 邏輯 * @param fun1 value 邏輯 * @param <K> 數據源類型 * @param <V> key 類型 * @param <R> value 類型 * @return */ public static <V,R,K> Map<V,R> test7(List<K> a, Function<K,V> fun, Function<K,R> fun1) { return Flux.fromIterable(a).collectMap(fun,fun1).block(); } Map<String,Integer>map=test7(userList,User::getName,User::getAge) // 輸出結果 {"zhang":10,"wang":11,"zhao":13,"li":12,"sun":14}
?
如果有錯誤 請大家留言指出
轉載于:https://www.cnblogs.com/zhangXingSheng/p/10743465.html
總結
以上是生活随笔為你收集整理的jdk8 Function的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 每天一个linux命令(lsof)
- 下一篇: java后台对接app微信支付