前言: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