1. 程式人生 > >JAVA 8 中新增 lambda 表示式的一些基本應用

JAVA 8 中新增 lambda 表示式的一些基本應用

import java.util.Arrays;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;

public class TestLambda {

    public static void main(String[] args) {
        new Thread(()-> System.out.println("Hello World !")).start();


        // lambda 表示式 的基本使用方式
        Function<String[],String> func = list -> {
            for (String str : list) {
                System.out.println(str);
            }
            return "";
        };

        // 非靜態方法 使用物件類引用
        TestLambda test = new TestLambda();
        Function<String[],String> func2 = test::applys;

        // 靜態方法直接使用 類名來引用
        Function<String[],String> func1 = TestLambda::apply;

        // 上面三種方式的 測試
        String[] strs = {"a","b","c"};
        func.apply(strs);
        func1.apply(strs);
        func2.apply(strs);

        // 使用 map 函式修改集合中的內容
        List<Integer> list = Arrays.asList(1000,1200,1300,1400,1500);
        list.stream().map( (value) -> "交稅後金額為 : " + (value - 0.05*value)).forEach(System.out::println);

        //  使用 map 函式修改集合中的內容,然後使用 reduce 做處理
        // reduce 函式簡介:最開始將第一個值 賦值給第一個引數,第二次將 返回值賦值給第一個引數,第三個值賦值給 第二個引數。
        Double dou = list.stream().map(value -> value*0.05).reduce((sum,value) -> {
            System.out.println(sum);
            System.out.println(value);
            return value + sum;
        }).get();
        System.out.println(dou);

        // 使用filter 篩選集合中的內容生成新的集合
        List<Integer> listInt = Arrays.asList(1002,1500,1431,2540,9851,1024,1204);
        List<Integer> filter = listInt.stream().filter( x -> x >1499 ).collect(Collectors.toList());
        System.out.println(filter);

        // 使用map 修改集合,然後將集合 按 “,”進行拼接
        List<String> nums = Arrays.asList("1","2","3","4","5","6","7");
        String numsChange = nums.stream().map(x -> x+5 ).collect(Collectors.joining(", "));
        System.out.println(numsChange);

    }

    static String apply(String[] strs){
        for (String str : strs) {
            System.out.println(str);
        }
        return "";
    }

    String applys(String[] strs){
        for (String str : strs) {
            System.out.println(str);
        }
        return "";
    }
}

Java 還給我們提供了一些 幫助介面在 rt.jar 中的 java.util.function 包中,也