Java8新特性(學(xué)習(xí)筆記)

1.Lambda表達式(常用)
2.函數(shù)式接口
3.方法引用和構(gòu)造器引用
4.Stream API(常用)
5.接口中的默認方法和靜態(tài)方法
6.新時間日期API
7.其他新特新(Optional)

1.Lambda

Lambda是一個匿名函數(shù)沈自,我們可以把Lambda表達式理解為是一段可以傳遞的代碼(將代碼像數(shù)據(jù)一樣進行傳遞)酌儒。可以寫出更簡潔枯途,更靈活的代碼忌怎。
一,Lambda 表達式的基礎(chǔ)語法:Java8中引入了一?個新的操作符 "->" 該操作符為箭頭操作符或 Lambda操作符酪夷,箭頭操作符將Lambda表達式拆分成兩部分:
左側(cè):Lambda 表達式的參數(shù)列表
右側(cè):Lambda 表達式中所執(zhí)行的功能榴啸,即 Lambda體。
語法格式一:無參數(shù)晚岭,無返回值

() -> System.out.println("Hello Lambda!" );

語法格式二:有一個參數(shù)鸥印,無返回值

(x) -> System.out.println(x)

語法格式三:有一個參數(shù),可以不加()

x -> System.out.println(x)

語法格式四:有兩個以上的參數(shù),有返回值库说,并且Lambda體中有多條語句

(x, y) -> {
           System.out.println("函數(shù)式接口");
           return Integer.compare(x, y);
       };

語法格式五:相對于四 若Lambda體中只有一條語句狂鞋,return 和 {} 都可以省略不寫

(x, y) -> Integer.compare(x, y);

語法格式六:Lambda 表達式的參數(shù)列表的數(shù)據(jù)類型可以省略不寫, 因為JVM編譯器通過上下問推斷出數(shù)據(jù)類型璃弄, 即 "類型推斷"

(Integer x, Integer y) -> Integer.compare(x, y);

二要销,Lambda 表達式需要“函數(shù)式接口”的支持
函數(shù)式接口:接口中只有一個抽象方法的接口构回,稱為函數(shù)式接口夏块。可以使用@FunctionalInterface 修飾纤掸,來檢查是否是函數(shù)式接口

2.Java8 內(nèi)置的四大核心函數(shù)式接口

Consumer<T> : 消費型接口
     void accept(T t);
Supplier<T> : 供給型接口
     T get();
Function<T脐供, R> : 函數(shù)型接口
     R apply(T t);
Predicater<T> : 斷言型接口
     boolean test(T t);

3.方法引用和構(gòu)造器引用

一.方法引用:若lambda體中的內(nèi)容已經(jīng)有方法實現(xiàn)了,我們可以使用“方法引用”
主要有三種語法格式:
①對象::實列方法名
②類::靜態(tài)方法名
③類::實列方法名
注意:
①Lambda體中調(diào)用方法的參數(shù)列表與返回值類型借跪,要與函數(shù)式接口中抽象方法的>函數(shù)列表和返回值類型保持一致
②若Lambda 參數(shù)列表中的第一個參數(shù)是實列方法的調(diào)用者,而第二個參數(shù)是實列方>法的參數(shù)時政己,可以使用 類::實列方法名

對象::實列方法名
Consumer<String> consumer1 = System.out::println;
   
類::靜態(tài)方法名
Comparator<Integer> comparator1 = Integer::compare;        
 
類::實列方法名
BiPredicate<String, String> predicate = String::equals;    

二.構(gòu)造器引用
格式:
類::new
注意:需要調(diào)用的構(gòu)造器的參數(shù)列表要與函數(shù)式接口中抽象方法的參數(shù)列表保持一致

Supplier<String> supplier = String::new;

三.數(shù)組引用

Function<Integer, String[]> function = String[]::new;

四.Stream(流)

Stream是數(shù)據(jù)渠道,用于操作數(shù)據(jù)源(集合掏愁,數(shù)組等)所生成的元素序列歇由。
"集合講的是數(shù)據(jù),流講的是計算"
注意:
①Stream自己不會存儲元素
②Stream不會改變源對象果港,相反沦泌,它會返回持有結(jié)果的新Stream
③Stream操作是延遲執(zhí)行的,它會等到需要結(jié)果時才執(zhí)行

一.Stream操作的三個步驟:創(chuàng)建Stream->中間操作->終止操作

      // 1.可以通過Collection系列集合提供的stream() 或 paralleStream() 獲取集合流
      List<String> strings = new ArrayList<>();
       Stream<String> stream = strings.stream();// 串行
       Stream<String> stream1 = strings.parallelStream();// 并行

       // 2.通過Arrays中靜態(tài)方法stream()獲取數(shù)組流
       String[] array = new String[10];
       Stream<String> stream2 = Arrays.stream(array);

       // 3. 通過Stream類中靜態(tài)方法of() 獲取流
      Stream<String> stringStream = Stream.of("1", "2", "3");

       // 4.創(chuàng)建無限流
       // 4.1 迭代
       Stream<Integer> iterate = Stream.iterate(0, x -> x + 3);
       iterate.forEach(System.out::println);
       iterate.limit(10).forEach(System.out::println);// limit中間操作
       // 4.2 生成
       Stream<Double> generate = Stream.generate(() -> Math.random());
       generate.forEach(System.out::println);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末辛掠,一起剝皮案震驚了整個濱河市谢谦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌萝衩,老刑警劉巖回挽,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異猩谊,居然都是意外死亡千劈,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門牌捷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來队塘,“玉大人,你說我怎么就攤上這事宜鸯°竟牛” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵淋袖,是天一觀的道長鸿市。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么焰情? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任陌凳,我火速辦了婚禮,結(jié)果婚禮上内舟,老公的妹妹穿的比我還像新娘合敦。我一直安慰自己,他們只是感情好验游,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布充岛。 她就那樣靜靜地躺著,像睡著了一般耕蝉。 火紅的嫁衣襯著肌膚如雪崔梗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天垒在,我揣著相機與錄音蒜魄,去河邊找鬼。 笑死场躯,一個胖子當著我的面吹牛谈为,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播踢关,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼伞鲫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了耘成?” 一聲冷哼從身側(cè)響起榔昔,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瘪菌,沒想到半個月后撒会,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡师妙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年诵肛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片默穴。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡怔檩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蓄诽,到底是詐尸還是另有隱情薛训,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布仑氛,位于F島的核電站乙埃,受9級特大地震影響闸英,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜介袜,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一甫何、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧遇伞,春花似錦辙喂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至跳芳,卻和暖如春芍锦,著一層夾襖步出監(jiān)牢的瞬間竹勉,已是汗流浹背飞盆。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留次乓,地道東北人吓歇。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像票腰,于是被迫代替她去往敵國和親城看。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容