1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Java 8 Function 函數(shù)接口

        共 8238字,需瀏覽 17分鐘

         ·

        2021-07-27 23:43


        封面圖:紹興 · 三味書屋(2021-07-10)

        在 Java 8 中,Function 接口是一個(gè)函數(shù)接口,它位于包 java.util.function 下。Function 接口中定義了一個(gè) R apply(T t) 方法,它可以接受一個(gè)泛型 T 對象,返回一個(gè)泛型 R 對象,即參數(shù)類型和返回類型可以不同。

        Function 接口源碼:

        @FunctionalInterface
        public interface Function<TR{

            apply(T t);

            default <V> Function<V, R> compose(Function<? super V, ? extends T> before) {
                Objects.requireNonNull(before);
                return (V v) -> apply(before.apply(v));
            }

            default <V> Function<T, V> andThen(Function<? super R, ? extends V> after) {
                Objects.requireNonNull(after);
                return (T t) -> after.apply(apply(t));
            }

            static <T> Function<T, T> identity() {
                return t -> t;
            }
        }

        1. Function apply

        示例 1:輸入一個(gè)字符串 <T> String, 返回字符串的大寫形式 <R> String。

        package com.wdbyte;

        import java.util.function.Function;

        public class Java8Function {
            public static void main(String[] args) {
                Function<String, String> toUpperCase = str -> str.toUpperCase();
                String result = toUpperCase.apply("www.wdbyte.com");
                System.out.println(result);
            }
        }

        輸出結(jié)果:

        WWW.WDBYTE.COM

        示例 2:輸入一個(gè)字符串 <T> String,返回字符串的長度 <R> Integer

        package com.wdbyte;

        import java.util.function.Function;

        public class Java8FunctionLength {
            public static void main(String[] args) {
                Function<String, Integer> lengthFunction = str -> str.length();
                Integer length = lengthFunction.apply("www.wdbyte.com");
                System.out.println(length);
            }
        }

        輸出結(jié)果:

        14

        2. Function andThen

        Function 函數(shù)接口的 andThen() 方法可以讓多個(gè) Function 函數(shù)連接使用。

        示例:輸入一個(gè)字符串,獲取字符串的長度,然后乘上 2。

        package com.wdbyte;

        import java.util.function.Function;

        public class Java8FunctionAndThen {
            public static void main(String[] args) {
                Function<String, Integer> lengthFunction = str -> str.length();
                Function<Integer, Integer> doubleFunction = length -> length * 2;
                Integer doubleLength = lengthFunction.andThen(doubleFunction).apply("www.wdbyte.com");
                System.out.println(doubleLength);
            }
        }

        結(jié)果:

        28

        3. List -> Map

        示例:輸入一個(gè)字符串 List 集合<T> List<String> , 返回一個(gè) key 為字符串本身,Value 為字符串長度的 Map。

        package com.wdbyte;

        import java.util.Arrays;
        import java.util.HashMap;
        import java.util.List;
        import java.util.Map;
        import java.util.function.Function;

        public class Java8FunctionListToMap {

            public static void main(String[] args) {
                List<String> list = Arrays.asList("java""nodejs""wdbyte.com");
                // lambda 方式
                Function<String, Integer> lengthFunction = str -> str.length();
                Map<String, Integer> listToMap = listToMap(list, lengthFunction);
                System.out.println(listToMap);

                // 方法引用方式
                Map<String, Integer> listToMap2 = listToMap(list, String::length);
                System.out.println(listToMap2);
            }

            public static <T, R> Map<T, R> listToMap(List<T> list, Function<T, R> function) {
                HashMap<T, R> hashMap = new HashMap<>();
                for (T t : list) {
                    hashMap.put(t, function.apply(t));
                }
                return hashMap;
            }
        }

        輸出結(jié)果:

        {java=4, wdbyte.com=10, nodejs=6}
        {java=4, wdbyte.com=10, nodejs=6}

        4. List -> List<Other>

        示例 :輸入一個(gè)字符串 List 集合 <T> List<String> ,返回大寫形式的字符串 List 集合,返回小寫形式的字符串 List 集合。

        package com.wdbyte;

        import java.util.ArrayList;
        import java.util.Arrays;
        import java.util.List;
        import java.util.function.Function;

        public class Java8FunctionString {

            public static void main(String[] args) {
                List<String> list = Arrays.asList("Java""Nodejs""Wdbyte.com");
                // 方法引用方式
                List<String> upperList = map(list, String::toUpperCase);
                List<String> lowerList = map(list, String::toLowerCase);
                System.out.println(upperList);
                System.out.println(lowerList);

                // Lambda 方式
                List<String> upperList2 = map(list, x -> x.toUpperCase());
                List<String> lowerList2 = map(list, x -> x.toLowerCase());
                System.out.println(upperList2);
                System.out.println(lowerList2);

            }

            public static <T, R> List<R> map(List<T> list, Function<T, R> function) {
                List<R> resultList = new ArrayList<>(list.size());
                for (T t : list) {
                    resultList.add(function.apply(t));
                }
                return resultList;
            }
        }

        輸出結(jié)果:

        [JAVA, NODEJS, WDBYTE.COM]
        [java, nodejs, wdbyte.com]
        [JAVA, NODEJS, WDBYTE.COM]
        [java, nodejs, wdbyte.com]

        擴(kuò)展閱讀

        Java 11 新特性介紹
        Java 10 新特性介紹
        Java 09 新特性介紹
        Java 8 新特性 -  Stream 介紹
        Java 8 新特性 - Lambda 表達(dá)式介紹
        Java 8 新特性 - 新的時(shí)間處理方式
        Java 8 新特性 - 使用Optional處理空指針
        Java 7 新特性介紹
        Java 7 新特性 -  NIO.2 介紹
        瀏覽 38
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            色戒完整版在线观看免费视频电影 | 国产69精品在线观看 | 啊~嗯去浴室里做h三人一起漫画 | 视频一区二区三区四区五区六区 | 青青人亚洲AV永久无码精品无 | 被两个男人插 | 完美世界之乱淫h侵犯 | 亚洲天堂导航 | 青草青视频 | 久久亚洲精品国产美女写真集下载 |