JDK1.8新特性


1、Lambda                                                           

Lambda的語法目前僅對於只有一個抽象方法的接口。

在Lambda項目中,早期稱為SAM類型(SAM = single abstract method 單一抽象方法)。在jdk1.8中,叫函數接口(functional interface)。比如Runnable,Callable,Comparator。

lambda語法包含三部分:a、參數列表;b、箭頭符號“->”;c、代碼塊。

(arg1,arg2)->{Statement};

只有一個參數可以寫成:arg->{Statement};

代碼塊類似方法體,return語句將控制權交還給匿名方法(即Lambda表達式)的調用者。如果代碼塊只有一行,可以省略return關鍵字和{}括號。

1 import java.util.Comparator;
2 public class TestLambda {
3     public static void main(String[] args) {
4         Runnable r = ()->{System.out.println("hello world");};
5         Comparator<String> c = (String s1,String s2)->s2.length()-s1.length();
6         r.run();
7         System.out.println(c.compare("s1", "12323"));
8     }
9 }

結果是:

1 hello world
2 3

我們也可以自定義函數接口

1 public class TestLambda {
2     interface testlambdainterface{
3         public void me(String str);
4     }
5     public static void main(String[] args) {
6         testlambdainterface tli = (String s)->{System.out.println(s);};
7         tli.me("hello world");
8     }
9 }

2、Stream類                                                           

提供了只保存算法的一個類,是一個高版本的Iterator。

可以通過Collection.stream()方法產生,靜態方法LongStream.of(1,2,3,4)和自定義。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM