JDK1.8集合新特性

Predicate:Predicate是個(gè)函數(shù)式接口额衙,和Function接口一樣免绿,不同的是Predicate接口的定義為Predicate<T,Boolean>山孔,也就是Predicate接口定義了接受一個(gè)類型為T的參數(shù)狞贱,返回一個(gè)boolean類型的結(jié)果澈缺。

使用實(shí)例:

Student stu=new Student("A",3);

Predicate<Student> predicate=s -> stu.getName.equals("A");

System.out.println(predicate.test(stu));//返回結(jié)果為true

Stream:Stream是以一種流式處理的思想對(duì)集合的元素進(jìn)行處理草戈。

使用實(shí)例:

List<Student> list=new Arraylist<Student>();

Student aa=new Student("E",3);

list.add(new ?Student("A",1));

list.add(new ?Student("B",2));

list.add(new ?Student("D",4));

list.add(new ?Student("C",3));

list.add(aa);

list.add(aa);

1.過(guò)濾年齡>1的Student:

List<Student> list1=list.stream().filter(s ->s.getAge>1).collect(Collectors.toList());

list1.forEach(stu ->{

System.out.println("stu"+stu.getName()+":"+stu.getAge());

});

2.過(guò)濾排序

List<Student> list1=list.stream().filter(s ->s.getAge>1).sorted((stu1,stu2) ->stu1.getAge()-stu2.getAge()).distinct().skip(2).collect(Collectors.toList());

distinct() 無(wú)參數(shù)塌鸯,過(guò)濾Stream中的重復(fù)元素,得到是無(wú)重復(fù)元素的Stream唐片,重復(fù)元素的依據(jù)是元素的equals方法

peek(Consumer) peek接收的參數(shù)為Consumer類型丙猬,Consumer在之前講到過(guò)接收一個(gè)T類型參數(shù),無(wú)返回值费韭,這是peek方法和map方法的主要區(qū)別茧球,peek用來(lái)處理無(wú)返回值的操作,比如打印元素星持,而map用來(lái)處理有返回值的操作抢埋。

sorted() 和上面的帶參數(shù)的sorted一樣,只不過(guò)這個(gè)無(wú)參數(shù)督暂,按照對(duì)象自定義的Comparator接口實(shí)現(xiàn)揪垄。如果對(duì)象未實(shí)現(xiàn)Comparator接口會(huì)報(bào)錯(cuò)。

skip(long) 跳過(guò)Stream中的前n個(gè)元素损痰,如果Stream元素個(gè)數(shù)小于n福侈,返回空的stream

limit(long) 獲取Stream中的前n個(gè)元素,如果Stream元素個(gè)數(shù)小于n卢未,返回全部元素

Optional:

Optional.ofNullable(T t) 獲取一個(gè)內(nèi)部元素為t的Optional對(duì)象肪凛,t如果為空,則返回空的Optional對(duì)象

ifPresent(Consumer) 判斷一個(gè)Optional內(nèi)部的元素是否為空辽社,為空不執(zhí)行consumer伟墙,不為空會(huì)執(zhí)行consumer

orElseGet(Supplier) 嘗試從Optional中獲取其元素,如果Optional為空滴铅,則執(zhí)行Supplier函數(shù)提供一個(gè)元素返回戳葵,否則返回Optional中的元素

使用實(shí)例:

Student aa1=new Student("H",7);

Optional.ofNullable(aa1).orElseGet(() -> {

? ? ? ? return null;

});

Optional.ofNullable(aa1).ifPresent(

stp -> { system.out.println("sss");}

);

集合轉(zhuǎn)換:

1.List轉(zhuǎn)set:

Set<Student> set=list.stream().collect(Collectors.toSet());

2.List轉(zhuǎn)map

Map<Integer,Object> map=list.stream().collect(Collectors.toMap(Student::getAge,Student -> Student,(stu1,stu2)-stu2));//其中的 (stu1, stu2) -> stu2 表示當(dāng)遇到重復(fù)元素時(shí)保留新的值

我們?nèi)绻M?dāng)遇到重復(fù)的key時(shí)判斷name的長(zhǎng)度,name較長(zhǎng)的保留汉匙,則可以寫成下面的方式:

.collect(Collectors.toMap(stu -> stu.getAge(), stu -> stu,

? ?(stu1, stu2) -> stu1.getName().length() > stu2.getName().length() ? stu1 : stu2));

3.按照年齡分組:

Map<Integer,List<Student>> maplist=list.stream().collect(Collectors.groupingBy(Student::getAge));

maplist.foreach((k,v) ->{

System.out.println("k:"+k+"v:"+v);

})

4.獲取名稱列表

List<String> namelist=list.stream().map(Student -> Student.getName()).collect(Collectors.toList());

5.使用lambda表達(dá)式簡(jiǎn)化4

List<String> namelist=list.stream().map(Student::getName).collect(Collector.toList());

6.replaceAll

List<String> list=Arrays.asList("111-222-333“,”444-555-666");

list.replaceAll(temp -> temp.replace("-",""));

7.merge

Map<String,String> map=new HashMap<String,String>();

map.put("ss","ss");

map.merge("ss","hh",String::concat);

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拱烁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子噩翠,更是在濱河造成了極大的恐慌戏自,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伤锚,死亡現(xiàn)場(chǎng)離奇詭異擅笔,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門猛们,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)念脯,“玉大人,你說(shuō)我怎么就攤上這事弯淘÷痰辏” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵庐橙,是天一觀的道長(zhǎng)惯吕。 經(jīng)常有香客問(wèn)我,道長(zhǎng)怕午,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任淹魄,我火速辦了婚禮郁惜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘甲锡。我一直安慰自己兆蕉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布缤沦。 她就那樣靜靜地躺著虎韵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪缸废。 梳的紋絲不亂的頭發(fā)上包蓝,一...
    開(kāi)封第一講書(shū)人閱讀 49,764評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音企量,去河邊找鬼测萎。 笑死,一個(gè)胖子當(dāng)著我的面吹牛届巩,可吹牛的內(nèi)容都是我干的硅瞧。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼恕汇,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼腕唧!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起瘾英,我...
    開(kāi)封第一講書(shū)人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤枣接,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后方咆,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體月腋,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了榆骚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片片拍。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖妓肢,靈堂內(nèi)的尸體忽然破棺而出捌省,到底是詐尸還是另有隱情,我是刑警寧澤碉钠,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布纲缓,位于F島的核電站,受9級(jí)特大地震影響喊废,放射性物質(zhì)發(fā)生泄漏祝高。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一污筷、第九天 我趴在偏房一處隱蔽的房頂上張望工闺。 院中可真熱鬧,春花似錦瓣蛀、人聲如沸陆蟆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)叠殷。三九已至,卻和暖如春诈皿,著一層夾襖步出監(jiān)牢的瞬間林束,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工纫塌, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留诊县,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓措左,卻偏偏與公主長(zhǎng)得像依痊,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子怎披,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

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