Java8 Stream流的簡(jiǎn)單使用

本文主要講解經(jīng)常使用的n種代碼場(chǎng)景

首先需要知道幾個(gè)關(guān)鍵的方法

  • map(mapToInt,mapToLong,mapToDouble)
  • 使用頻率: #####

說(shuō)明 : 將流中的每一個(gè)元素T轉(zhuǎn)換成R

例如:

// 獲取集合中對(duì)象所有的姓名(處理數(shù)據(jù)應(yīng)該經(jīng)常用到)
List<String> collect = personList.stream().map(Person::getName).collect(Collectors.toList());
//如果要去重可以接著使用distinct()
List<String> collect = personList.stream().map(Person::getName).distinct().collect(Collectors.toList());
  • flatMap(T -> Stream)
  • 使用頻率: ####

說(shuō)明 : 將流中的每一個(gè)元素 T 映射為一個(gè)流譬圣,再把每一個(gè)流連接成為一個(gè)流,有人解釋成切片.

例如:

//集合中還是集合,但是我想要合并成一個(gè)集合
List<List<Person>> list = new ArrayList<>();
List<Person> collect = list.stream().flatMap(people -> people.stream()).collect(Collectors.toList());
//集合中對(duì)字符串處理之后合并成一個(gè)集合
List<String> list = new ArrayList();
list.add("1,2,3");
list.add("4,5,6");
list.add("7,8");
List<String> collect = list.stream().flatMap(str -> Arrays.stream(str.split(","))).collect(Collectors.toList());
  • filter(T -> boolean)
  • 使用頻率: ####

說(shuō)明 : 篩選出條件為true的元素

例如:

// 獲取年齡==5的元素
List<Person> collect = personList.stream().filter(person -> person.getAge() == 5).collect(Collectors.toList());
  • anyMatch(T -> boolean),allMatch(T -> boolean),noneMatch(T -> boolean),findAny() , findFirst()
  • 使用頻率: ####

說(shuō)明 : 這些方法都是字面意思,用起來(lái)很簡(jiǎn)單
例如:

// 查詢集合中年齡是否存在5歲的
boolean anyMatch = personList.stream().anyMatch(person -> person.getAge().equals(5));
  • distinct()
  • 使用頻率: ###

說(shuō)明 : 去重,equals方法比較兩個(gè)元素是否相等

// 這里需要說(shuō)明的是由于Person為對(duì)象(引用類型),所以這里如果需要去重,就要自己重寫(xiě)equals方法.
List<Person> collect = personList.stream().distinct().collect(Collectors.toList());
  • collect(Collectors.toXXX)
  • 使用頻率: ######

說(shuō)明 : 收集流的方法

// personList.stream().distinct()這里處理完之后返回的還是流對(duì)象,我們需要轉(zhuǎn)換成集合的話就要使用.
List<Person> collect = personList.stream().distinct().collect(Collectors.toList());
//集合轉(zhuǎn)成map對(duì)象的使用, 第一個(gè)為key,后面是value,第三個(gè)參數(shù)當(dāng)key沖突的時(shí)候是保留前者還是保留后者,如果不處理的話,當(dāng)key沖突時(shí)會(huì)報(bào)異常.
Map<Integer, String> collect = personList.stream().collect(Collectors.toMap(person -> person.getAge(), person -> person.getName(), (p1, p2) -> p1));

Stream大大的簡(jiǎn)化了我們?nèi)粘4a的行數(shù),方便了使用,另外還可以減少數(shù)據(jù)庫(kù)的sql分組,limit處理.

                                                          ** 看完的給個(gè)贊吧**
                                                          ** 看完的給個(gè)贊吧**
                                                          ** 看完的給個(gè)贊吧**
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市掩宜,隨后出現(xiàn)的幾起案子岁诉,更是在濱河造成了極大的恐慌寇蚊,老刑警劉巖横腿,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件折联,死亡現(xiàn)場(chǎng)離奇詭異粒褒,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)诚镰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)奕坟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)祥款,“玉大人,你說(shuō)我怎么就攤上這事月杉∪絮耍” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵苛萎,是天一觀的道長(zhǎng)桨昙。 經(jīng)常有香客問(wèn)我,道長(zhǎng)腌歉,這世上最難降的妖魔是什么蛙酪? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮翘盖,結(jié)果婚禮上滤否,老公的妹妹穿的比我還像新娘。我一直安慰自己最仑,他們只是感情好藐俺,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著泥彤,像睡著了一般欲芹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上吟吝,一...
    開(kāi)封第一講書(shū)人閱讀 52,255評(píng)論 1 308
  • 那天菱父,我揣著相機(jī)與錄音,去河邊找鬼剑逃。 笑死浙宜,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蛹磺。 我是一名探鬼主播粟瞬,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼萤捆!你這毒婦竟也來(lái)了裙品?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤俗或,失蹤者是張志新(化名)和其女友劉穎市怎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體辛慰,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡区匠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了帅腌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驰弄。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蝠筑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出揩懒,到底是詐尸還是另有隱情什乙,我是刑警寧澤,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布已球,位于F島的核電站臣镣,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏智亮。R本人自食惡果不足惜忆某,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望阔蛉。 院中可真熱鬧弃舒,春花似錦、人聲如沸状原。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)颠区。三九已至削锰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間毕莱,已是汗流浹背器贩。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工损搬, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留浓瞪,地道東北人紧阔。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓晦攒,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親电湘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子狡门,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359