JDK1.8新特性--API

非原創(chuàng)侣监,知識總結(jié)性文章

用于集合上批量數(shù)據(jù)操作的 Java Stream API

java.util.stream是 Java 8中添加的新程序包腺律,以便對集合執(zhí)行類似過濾/映射/歸約的操作欲账。Stream API 將允許順序執(zhí)行和并行執(zhí)顷牌,是最好的功能之一湘今,如果經(jīng)常處理Collections,而且集合元素很多唉窃,我們可以根據(jù)某些條件過濾掉它們耙饰。

Collection接口已使用 stream()和 parallelStream()默認方法進行了擴展,以獲取用于順序執(zhí)行和并行執(zhí)行的 Stream句携。讓我們用一個簡單的例子看看它們的用法榔幸。

package com.taotao.springboot;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;

public class StreamList {
    public static void main(String[] args) {
        List<Integer> myList = new ArrayList<>();
        for (int i = 0; i < 100; i++) myList.add(i);

        //串行流
        Stream<Integer> sequentialStream = myList.stream();

        //并行流
        Stream<Integer> parallelStream = myList.parallelStream();

        //過濾
        Stream<Integer> highNums = parallelStream.filter(p -> p > 90);
        //使用 forEach 遍歷
        highNums.forEach(p -> System.out.println("High Nums parallel=" + p));

        Stream<Integer> highNumsSeq = sequentialStream.filter(p -> p > 90);
        highNumsSeq.forEach(p -> System.out.println("High Nums sequential=" + p));
    }
}

運行上述代碼的 main 方法允乐,你將看到如下輸出:
High Nums parallel=91
High Nums parallel=93
High Nums parallel=96
High Nums parallel=94
High Nums parallel=95
High Nums parallel=92
High Nums parallel=97
High Nums parallel=98
High Nums parallel=99
High Nums sequential=91
High Nums sequential=92
High Nums sequential=93
High Nums sequential=94
High Nums sequential=95
High Nums sequential=96
High Nums sequential=97
High Nums sequential=98
High Nums sequential=99
請注意矮嫉,并行流不按集合元素排列順序處理,但在處理大量元素的集合時將非常有用牍疏。

新的時間 API

在 Java中 使用日期蠢笋,時間和時區(qū)一直很困難。Java中沒有用于日期和時間的標準方法或API鳞陨。java.time程序包是 Java 8一個不錯的附加功能昨寞,它將簡化Java中使用時間的過程瞻惋。

僅查看 Java Time API軟件包,我就可以感覺到它非常易于使用援岩。它具有一些子包java.time.format歼狼,這些子包提供用于打印和解析日期和時間的類,并java.time.zone提供對時區(qū)及其規(guī)則的支持享怀。

新的Time API在整月的幾個月和一周中的幾天中都更喜歡枚舉而不是整數(shù)常量羽峰。將DateTime對象轉(zhuǎn)換為字符串的類是DateTimeFormatter。

集合API的改進

我們已經(jīng)看到了 forEach()方法和用于集合的 Stream API添瓷。Collection API還有一些新方法是:

Iterator:forEachRemaining(Consumer action)在所有元素都已處理完畢或該動作引發(fā)異常之前梅屉,對每個剩余元素執(zhí)行給定操作的默認方法。
Collection:removeIf(Predicate filter)刪除此集合中所有滿足特定條件的元素的默認方法鳞贷。
Collection:spliterator() 該方法返回Spliterator實例坯汤,該實例可用于順序或并行遍歷元素。
map:replaceAll()搀愧,compute()惰聂,merge()方法。
具有鍵沖突的HashMap類的性能改進

并發(fā) API 的改進

一些重要的并發(fā)API增強功能包括:
ConcurrentHashMap: compute()咱筛,forEach()庶近,forEachEntry(),forEachKey()眷蚓,forEachValue()鼻种,merge(),reduce()和search()方法沙热。
CompletableFuture:可以明確完成(設(shè)置其值和狀態(tài))叉钥。
ExecutorsnewWorkStealingPool():使用所有可用處理器作為目標并行度級別創(chuàng)建竊取線程池的方法篙贸。

Java IO改進

一些IO改進包括:
Files.list(Path dir) 返回延遲填充的Stream投队,其元素是目錄中的條目。
Files.lines(Path path) 從文件中讀取所有行作為流爵川。
Files.find() 通過在以給定起始文件為根的文件樹中搜索文件敷鸦,返回通過路徑延遲填充的Stream。
BufferedReader.lines() 返回一個Stream寝贡,其元素是從此BufferedReader中讀取的行扒披。

其他核心API改進

一些其他API改進:

  • ThreadLocal 靜態(tài)方法可以使用 withInitial(Supplier supplier) 輕松創(chuàng)建實例。
  • Comparator 接口已擴展了許多默認和靜態(tài)方法圃泡,用于自然排序碟案,反向排序等。
  • Integer颇蜡,Long 和 Double 包裝器類中的 min()价说,max()和sum()方法辆亏。
  • 布爾類中的 logicalAnd(),logicalOr()和 logicalXor()方法鳖目。
  • ZipFile.stream()方法獲取ZIP文件條目上的有序 Stream扮叨。條目以在 ZIP 文件的中央目錄中出現(xiàn)的順序出現(xiàn)在 Stream 中。
  • Math類中的幾種實用方法领迈。
  • jjs 添加命令以調(diào)用 Nashorn Engine甫匹。
  • jdeps 添加命令以分析類文件
  • JDBC-ODBC 橋已被刪除。
  • PermGen 內(nèi)存空間已被刪除
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末惦费,一起剝皮案震驚了整個濱河市兵迅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌薪贫,老刑警劉巖恍箭,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異瞧省,居然都是意外死亡耳舅,警方通過查閱死者的電腦和手機波岛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人遥诉,你說我怎么就攤上這事褪贵“列澹” “怎么了蕊梧?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長梁棠。 經(jīng)常有香客問我置森,道長,這世上最難降的妖魔是什么符糊? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任凫海,我火速辦了婚禮,結(jié)果婚禮上男娄,老公的妹妹穿的比我還像新娘行贪。我一直安慰自己,他們只是感情好模闲,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布建瘫。 她就那樣靜靜地躺著,像睡著了一般围橡。 火紅的嫁衣襯著肌膚如雪暖混。 梳的紋絲不亂的頭發(fā)上缕贡,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天翁授,我揣著相機與錄音拣播,去河邊找鬼。 笑死收擦,一個胖子當著我的面吹牛贮配,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播塞赂,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼泪勒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了宴猾?” 一聲冷哼從身側(cè)響起圆存,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎仇哆,沒想到半個月后沦辙,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡讹剔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年油讯,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片延欠。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡陌兑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出由捎,到底是詐尸還是另有隱情兔综,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布狞玛,位于F島的核電站邻奠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏为居。R本人自食惡果不足惜碌宴,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蒙畴。 院中可真熱鬧贰镣,春花似錦、人聲如沸膳凝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蹬音。三九已至上煤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間著淆,已是汗流浹背劫狠。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工拴疤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人独泞。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓呐矾,卻偏偏與公主長得像,于是被迫代替她去往敵國和親懦砂。 傳聞我的和親對象是個殘疾皇子蜒犯,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

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