jdk8的特性stream().map()

轉(zhuǎn):

https://blog.csdn.net/sanchan/article/details/70753645;

https://blog.csdn.net/u010425776/article/details/52344425

java8的optional的使用:

http://www.jdon.com/idea/java/using-optional-effectively-in-java-8.html

http://www.runoob.com/java/java8-optional-class.html

Optional 類是一個可以為null的容器對象。如果值存在則isPresent()方法會返回true组哩,調(diào)用get()方法會返回該對象。

Optional 是個容器:它可以保存類型T的值,或者僅僅保存null糯而。Optional提供很多有用的方法,這樣我們就不用顯式進行空值檢測泊窘。

Optional 類的引入很好的解決空指針異常熄驼。

類聲明

以下是一個java.util.Optional<T>類的聲明:

public?final?class?Optional?extends?Object

在Java 8中stream().map(),您可以將對象轉(zhuǎn)換為其他對象烘豹。查看以下示例:

1.大寫字符串列表

1.1簡單的Java示例將Strings列表轉(zhuǎn)換為大寫瓜贾。

TestJava8.java

package com.mkyong.java8;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

import java.util.stream.Collectors;

public?class?TestJava8 {

????public?static?void?main(String[] args) {

? ? ? ?List<String> alpha = Arrays.asList("a",?"b",?"c",?"d");

????????//Before Java8

????????List alphaUpper =?new?ArrayList<>();

????????for?(String s : alpha) {

????????????alphaUpper.add(s.toUpperCase());

????????}

????????System.out.println(alpha);?//[a, b, c, d]

????????System.out.println(alphaUpper);?//[A, B, C, D]

????????// Java 8

????????List<String> collect = alpha.stream().map(String::toUpperCase).collect(Collectors.toList());

????????System.out.println(collect);?//[A, B, C, D]

????????// Extra, streams apply to any data type.

????????List<Integer> num = Arrays.asList(1,2,3,4,5);

????????List<Integer> collect1 = num.stream().map(n -> n * 2).collect(Collectors.toList());

????????System.out.println(collect1);?//[2, 4, 6, 8, 10]

????}

}

2.對象列表 - >字符串列表

2.1 name從staff對象列表中獲取所有值。

Staff.java

package com.mkyong.java8;

import java.math.BigDecimal;

public?class?Staff {

????private?String name;

????private?int?age;

????private?BigDecimal salary;

????//...

}

TestJava8.java

package com.mkyong.java8;

import java.math.BigDecimal;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

import java.util.stream.Collectors;

public?class?TestJava8 {

????public?static?void?main(String[] args) {

????????List<Staff> staff = Arrays.asList(

????????????????new?Staff("mkyong", 30,?new?BigDecimal(10000)),

????????????????new?Staff("jack", 27,?new?BigDecimal(20000)),

????????????????new?Staff("lawrence", 33,?new?BigDecimal(30000))

????????);

????????//Before Java 8

????????List result =?new?ArrayList<>();

????????for?(Staff x : staff) {

????????????result.add(x.getName());

????????}

????????System.out.println(result);?//[mkyong, jack, lawrence]

????????//Java 8

????????List<String> collect = staff.stream().map(x -> x.getName()).collect(Collectors.toList());

????????System.out.println(collect);?//[mkyong, jack, lawrence]

????}

}

對象列表 - >其他對象列表

3.1此示例說明如何將staff對象列表轉(zhuǎn)換為對象列表StaffPublic携悯。

Staff.java

package com.mkyong.java8;

import java.math.BigDecimal;

public?class?Staff {

????private?String name;

????private?int?age;

????private?BigDecimal salary;

????//...

}

StaffPublic.java

package com.mkyong.java8;

public?class?StaffPublic {

????private?String name;

????private?int?age;

????private?String extra;

????//...

}

3.2 Java 8之前祭芦。

BeforeJava8.java

package com.mkyong.java8;

import java.math.BigDecimal;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

public?class?BeforeJava8 {

????public?static?void?main(String[] args) {

????????List<Staff> staff = Arrays.asList(

????????????????new?Staff("mkyong", 30,?new?BigDecimal(10000)),

????????????????new?Staff("jack", 27,?new?BigDecimal(20000)),

????????????????new?Staff("lawrence", 33,?new?BigDecimal(30000))

????????);

????????List<StaffPublic> result = convertToStaffPublic(staff);

????????System.out.println(result);

????}

????private?static?List<StaffPublic> convertToStaffPublic(List<Staff> staff) {

????????List result =?new?ArrayList<>();

????????for?(Staff temp : staff) {

????????????StaffPublic obj =?new?StaffPublic();

????????????obj.setName(temp.getName());

????????????obj.setAge(temp.getAge());

????????????if?("mkyong".equals(temp.getName())) {

????????????????obj.setExtra("this field is for mkyong only!");

????????????}

????????????result.add(obj);

????????}

????????return?result;

????}

}

輸出

[

????StaffPublic{name='mkyong', age=30, extra='this field is for mkyong only!'},

????StaffPublic{name='jack', age=27, extra='null'},

????StaffPublic{name='lawrence', age=33, extra='null'}

]

1

2

3

4

5

3.3 Java 8的例子。


NowJava8.java

package com.mkyong.java8;

package com.hostingcompass.web.java8;

import java.math.BigDecimal;

import java.util.Arrays;

import java.util.List;

import java.util.stream.Collectors;

public?class?NowJava8 {

????public?static?void?main(String[] args) {

????????List<Staff> staff = Arrays.asList(

????????????????new?Staff("mkyong", 30,?new?BigDecimal(10000)),

????????????????new?Staff("jack", 27,?new?BigDecimal(20000)),

????????????????new?Staff("lawrence", 33,?new?BigDecimal(30000))

????????);

????????// convert inside the map() method directly.

????????List<StaffPublic> result = staff.stream().map(temp -> {

????????????StaffPublic obj =?new?StaffPublic();

????????????obj.setName(temp.getName());

????????????obj.setAge(temp.getAge());

????????????if?("mkyong".equals(temp.getName())) {

????????????????obj.setExtra("this field is for mkyong only!");

????????????}

????????????return?obj;

????????}).collect(Collectors.toList());

????????System.out.println(result);

????}


}


[

????StaffPublic{name='mkyong', age=30, extra='this field is for mkyong only!'},

????StaffPublic{name='jack', age=27, extra='null'},

????StaffPublic{name='lawrence', age=33, extra='null'}

]

過濾

List<Globalconst> datas = GlobalconstCache.getGlobalconstList("TABusinessType");

? ? ? ? List<Globalconst> result = datas

? ? ? ? ? ? .stream()

? ? ? ? ? ? .filter(

? ? ? ? ? ? ? ? (globalconst) -> globalconst.getInteriorid().equals("A")

? ? ? ? ? ? ? ? ? ? || globalconst.getInteriorid().equals("S")

? ? ? ? ? ? ? ? ? ? || globalconst.getInteriorid().equals("R"))

? ? ? ? ? ? .collect(Collectors.toList());

排序

List<ReckoningInfo> orderList=list.stream().sorted(Comparator.comparing(ReckoningInfo::getTradeDate)).collect(Collectors.toList());

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末憔鬼,一起剝皮案震驚了整個濱河市龟劲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌轴或,老刑警劉巖咸灿,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異侮叮,居然都是意外死亡,警方通過查閱死者的電腦和手機悼瘾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門囊榜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人亥宿,你說我怎么就攤上這事卸勺。” “怎么了烫扼?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵曙求,是天一觀的道長。 經(jīng)常有香客問我映企,道長悟狱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任堰氓,我火速辦了婚禮挤渐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘双絮。我一直安慰自己浴麻,他們只是感情好得问,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著软免,像睡著了一般宫纬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上膏萧,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天漓骚,我揣著相機與錄音,去河邊找鬼向抢。 笑死认境,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的挟鸠。 我是一名探鬼主播叉信,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼艘希!你這毒婦竟也來了硼身?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤覆享,失蹤者是張志新(化名)和其女友劉穎佳遂,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撒顿,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡丑罪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了凤壁。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吩屹。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖拧抖,靈堂內(nèi)的尸體忽然破棺而出煤搜,到底是詐尸還是另有隱情,我是刑警寧澤唧席,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布擦盾,位于F島的核電站,受9級特大地震影響淌哟,放射性物質(zhì)發(fā)生泄漏迹卢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一徒仓、第九天 我趴在偏房一處隱蔽的房頂上張望婶希。 院中可真熱鬧,春花似錦蓬衡、人聲如沸喻杈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽筒饰。三九已至缴啡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瓷们,已是汗流浹背业栅。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留谬晕,地道東北人碘裕。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像攒钳,于是被迫代替她去往敵國和親帮孔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

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