Java8經常使用新特性實踐

前言:java

  時下Oracle開速迭代的Java社區以即將推出Java10,但尷尬的是很多小中企業仍使用JDK7甚至JDK6開發。ide

 

  從上面列出的JDK8特性中咱們能夠發現Java8的部分特性很明顯的是從Scala借鑑過來,其設計目的只要是爲了讓代碼更精簡同時使代碼可讀性更高。本人在實際項目中比較經常使用的是3個新特性測試

1) forEach()spa

2) stream()設計

3) Interface動態建立code

如下demo已通過本人親測,現提供給有須要的朋友!blog

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
/**
 * Java8經常使用新特性測試
 * @author John
 * @date 2018-04-14 21:54
 *
 */
public class Java8NewFeature {
    public static void main(String[] args) {
        System.out.println("*** forEach()新特性 ***");
        showForeach();
        System.out.println("*** stream()新特性 ***");
        showStream();
        System.out.println("*** Interface動態建立新特性 ***");
        showEasyInterface();
    }

    public static void showForeach() {
        Integer numbers[] = { 1, 33, 5 };
        List<Integer> numbersList = Arrays.asList(numbers);
        numbersList.forEach(System.out::println);

    }

    public static void showStream() {
        Integer numbers[] = { 1, 33, 5, 100, 2 };
        List<Integer> numbersList = Arrays.asList(numbers);
        List<String> newNumbers = numbersList.stream()
                .filter(num -> (num % 2 == 1)).map(num -> "" + num)
                .collect(Collectors.toList());
        newNumbers.forEach(System.out::println);

        int sum = numbersList.stream().reduce((a, b) -> (a + b)).get();
        System.out.println("sum = " + sum);
    }

    public static void showEasyInterface() {
        Integer numbers[] = { 1, 33, 5 };
        List<Integer> numbersList = Arrays.asList(numbers);
        Collections.sort(numbersList, (a, b) -> (b - a));
        numbersList.forEach(System.out::println);
        
        // JDK7實現自定義排序
//        Collections.sort(numbersList,new Comparator<Integer>() {
//
//            @Override
//            public int compare(Integer o1, Integer o2) {
//                // TODO Auto-generated method stub
//                return o2 - o1;
//            }
//            
//        });
    }
}

 == 測試輸出結果 ==排序

*** forEach()新特性 ***
1
33
5
*** stream()新特性 ***
1
33
5
sum = 141
*** Interface動態建立新特性 ***
1
5
33
相關文章
相關標籤/搜索