最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java基礎(chǔ)理論Stream管道流Map操作示例

 更新時(shí)間:2022年03月16日 10:55:56   作者:字母哥哥  
這篇文章主要未大家介紹了java基礎(chǔ)理論Stream管道流Map操作方法示例解析,有需要的朋友可以借鑒參考下希望能夠有所幫助,祝大家多多進(jìn)步

一、回顧Stream管道流map的基礎(chǔ)用法

最簡(jiǎn)單的需求:將集合中的每一個(gè)字符串,全部轉(zhuǎn)換成大寫(xiě)!

List<String> alpha = Arrays.asList("Monkey", "Lion", "Giraffe", "Lemur");
//不使用Stream管道流
List<String> alphaUpper = new ArrayList<>();
for (String s : alpha) {
    alphaUpper.add(s.toUpperCase());
}
System.out.println(alphaUpper); //[MONKEY, LION, GIRAFFE, LEMUR]
// 使用Stream管道流
List<String> collect = alpha.stream().map(String::toUpperCase).collect(Collectors.toList());
//上面使用了方法引用,和下面的lambda表達(dá)式語(yǔ)法效果是一樣的
//List<String> collect = alpha.stream().map(s -> s.toUpperCase()).collect(Collectors.toList());
System.out.println(collect); //[MONKEY, LION, GIRAFFE, LEMUR]

所以map函數(shù)的作用就是針對(duì)管道流中的每一個(gè)數(shù)據(jù)元素進(jìn)行轉(zhuǎn)換操作。

file

二、處理非字符串類(lèi)型集合元素

map()函數(shù)不僅可以處理數(shù)據(jù),還可以轉(zhuǎn)換數(shù)據(jù)的類(lèi)型。如下:

List<Integer> lengths = alpha.stream()
        .map(String::length)
        .collect(Collectors.toList());
System.out.println(lengths); //[6, 4, 7, 5]
Stream.of("Monkey", "Lion", "Giraffe", "Lemur")
        .mapToInt(String::length)
        .forEach(System.out::println);

輸出如下:

6
4
7
5

除了mapToInt。還有maoToLong,mapToDouble等等用法

三、再?gòu)?fù)雜一點(diǎn):處理對(duì)象數(shù)據(jù)格式轉(zhuǎn)換

還是使用上一節(jié)中的Employee類(lèi),創(chuàng)建10個(gè)對(duì)象。需求如下:

  • 將每一個(gè)Employee的年齡增加一歲
  • 將性別中的“M”換成“male”,F(xiàn)換成Female。
public static void main(String[] args){
    Employee e1 = new Employee(1,23,"M","Rick","Beethovan");
    Employee e2 = new Employee(2,13,"F","Martina","Hengis");
    Employee e3 = new Employee(3,43,"M","Ricky","Martin");
    Employee e4 = new Employee(4,26,"M","Jon","Lowman");
    Employee e5 = new Employee(5,19,"F","Cristine","Maria");
    Employee e6 = new Employee(6,15,"M","David","Feezor");
    Employee e7 = new Employee(7,68,"F","Melissa","Roy");
    Employee e8 = new Employee(8,79,"M","Alex","Gussin");
    Employee e9 = new Employee(9,15,"F","Neetu","Singh");
    Employee e10 = new Employee(10,45,"M","Naveen","Jain");
    List<Employee> employees = Arrays.asList(e1, e2, e3, e4, e5, e6, e7, e8, e9, e10);
    /*List<Employee> maped = employees.stream()
            .map(e -> {
                e.setAge(e.getAge() + 1);
                e.setGender(e.getGender().equals("M")?"male":"female");
                return e;
            }).collect(Collectors.toList());*/
    List<Employee> maped = employees.stream()
            .peek(e -> {
                e.setAge(e.getAge() + 1);
                e.setGender(e.getGender().equals("M")?"male":"female");
            }).collect(Collectors.toList());
    System.out.println(maped);
}

由于map的參數(shù)e就是返回值,所以可以用peek函數(shù)。peek函數(shù)是一種特殊的map函數(shù),當(dāng)函數(shù)沒(méi)有返回值或者參數(shù)就是返回值的時(shí)候可以使用peek函數(shù)。

四、flatMap

map可以對(duì)管道流中的數(shù)據(jù)進(jìn)行轉(zhuǎn)換操作,但是如果管道中還有管道該如何處理?即:如何處理二維數(shù)組及二維集合類(lèi)。實(shí)現(xiàn)一個(gè)簡(jiǎn)單的需求:將“hello”,“world”兩個(gè)字符串組成的集合,元素的每一個(gè)字母打印出來(lái)。如果不用Stream我們?cè)趺磳?xiě)?寫(xiě)2層for循環(huán),第一層遍歷字符串,并且將字符串拆分成char數(shù)組,第二層for循環(huán)遍歷char數(shù)組。

List<String> words = Arrays.asList("hello", "word");
words.stream()
        .map(w -> Arrays.stream(w.split("")))    //[[h,e,l,l,o],[w,o,r,l,d]]
        .forEach(System.out::println);

輸出打印結(jié)果:

java.util.stream.ReferencePipeline$Head@3551a94
java.util.stream.ReferencePipeline$Head@531be3c5

用map方法是做不到的,這個(gè)需求用map方法無(wú)法實(shí)現(xiàn)。map只能針對(duì)一維數(shù)組進(jìn)行操作,數(shù)組里面還有數(shù)組,管道里面還有管道,它是處理不了每一個(gè)元素的。

file

flatMap可以理解為將若干個(gè)子管道中的數(shù)據(jù)全都,平面展開(kāi)到父管道中進(jìn)行處理。

file

words.stream()
        .flatMap(w -> Arrays.stream(w.split(""))) // [h,e,l,l,o,w,o,r,l,d]
        .forEach(System.out::println);

輸出打印結(jié)果:

h
e
l
l
o
w
o
r
d

以上就是java基礎(chǔ)理論Stream管道流Map操作示例的詳細(xì)內(nèi)容,更多關(guān)于java Stream管道流Map操作的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • springboot加載復(fù)雜的yml文件獲取不到值的解決方案

    springboot加載復(fù)雜的yml文件獲取不到值的解決方案

    這篇文章主要介紹了springboot加載復(fù)雜的yml文件獲取不到值的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • java寫(xiě)入文件的幾種方法分享

    java寫(xiě)入文件的幾種方法分享

    這篇文章主要介紹了java寫(xiě)入文件的幾種方法,需要的朋友可以參考下
    2014-02-02
  • 深入理解Spring AOP

    深入理解Spring AOP

    這篇文章主要介紹了深入理解Spring AOP,詳細(xì)的介紹了spring aop的具體實(shí)現(xiàn)與理論
    2017-01-01
  • Java中內(nèi)存異常StackOverflowError與OutOfMemoryError詳解

    Java中內(nèi)存異常StackOverflowError與OutOfMemoryError詳解

    這篇文章主要介紹了 Java中內(nèi)存異常StackOverflowError與OutOfMemoryError詳解的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • java通過(guò)ssh連接執(zhí)行shell命令,文件傳輸方式

    java通過(guò)ssh連接執(zhí)行shell命令,文件傳輸方式

    這篇文章主要介紹了java通過(guò)ssh連接執(zhí)行shell命令,文件傳輸方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 教你如何寫(xiě)springboot接口?

    教你如何寫(xiě)springboot接口?

    這篇文章主要介紹了教你如何寫(xiě)springboot接口,Spring?Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程。該框架使用了特定的方式來(lái)進(jìn)行配置,從而使開(kāi)發(fā)人員不再需要定義樣板化的配置,需要的朋友可以參考y一下
    2022-01-01
  • JAVA使用爬蟲(chóng)抓取網(wǎng)站網(wǎng)頁(yè)內(nèi)容的方法

    JAVA使用爬蟲(chóng)抓取網(wǎng)站網(wǎng)頁(yè)內(nèi)容的方法

    這篇文章主要介紹了JAVA使用爬蟲(chóng)抓取網(wǎng)站網(wǎng)頁(yè)內(nèi)容的方法,實(shí)例分析了java爬蟲(chóng)的兩種實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • Java 在PPT中添加混合圖表過(guò)程詳解

    Java 在PPT中添加混合圖表過(guò)程詳解

    這篇文章主要介紹了Java 在PPT中添加混合圖表過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • java多態(tài)中的就近原則介紹

    java多態(tài)中的就近原則介紹

    大家好,本篇文章主要講的是java多態(tài)中的就近原則介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下,方便下次瀏覽
    2021-12-12
  • Spring Boot使用Allatori代碼混淆的方法

    Spring Boot使用Allatori代碼混淆的方法

    這篇文章主要介紹了Spring Boot使用Allatori代碼混淆的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03

最新評(píng)論

巨鹿县| 偏关县| 梁山县| 什邡市| 龙海市| 普宁市| 浮山县| 宣城市| 泰安市| 汨罗市| 时尚| 肇东市| 灌云县| 渭源县| 阜康市| 齐齐哈尔市| 定南县| 安乡县| 嘉祥县| 上饶市| 宁化县| 铜陵市| 临泉县| 克山县| 聊城市| 莒南县| 清远市| 胶南市| 新疆| 简阳市| 广宁县| 县级市| 左贡县| 平邑县| 衡水市| 姚安县| 翁源县| 浦东新区| 浑源县| 上林县| 葵青区|