国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java8 - Streams map()

這篇具有很好參考價(jià)值的文章主要介紹了Java8 - Streams map()。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


stream.map,【Java - Java 8】,java,Streams#map

概述

Stream.map()是Stream最常用的一個(gè)轉(zhuǎn)換方法,它把一個(gè)Stream轉(zhuǎn)換為另一個(gè)Stream

map()方法用于將一個(gè)Stream的每個(gè)元素映射成另一個(gè)元素并轉(zhuǎn)換成一個(gè)新的Stream;

可以將一種元素類型轉(zhuǎn)換成另一種元素類型。

    /**
     * Returns a stream consisting of the results of applying the given
     * function to the elements of this stream.
     *
     * <p>This is an <a href="package-summary.html#StreamOps">intermediate
     * operation</a>.
     *
     * @param <R> The element type of the new stream
     * @param mapper a <a href="package-summary.html#NonInterference">non-interfering</a>,
     *               <a href="package-summary.html#Statelessness">stateless</a>
     *               function to apply to each element
     * @return the new stream
     */
    <R> Stream<R> map(Function<? super T, ? extends R> mapper);

map()方法接收的對(duì)象是Function接口對(duì)象,它定義了一個(gè)apply()方法,負(fù)責(zé)把一個(gè)T類型轉(zhuǎn)換成R類型。

其中,F(xiàn)unction的定義為

@FunctionalInterface
public interface Function<T, R> {

    /**
     * Applies this function to the given argument.
     *
     * @param t the function argument
     * @return the function result
     */
    R apply(T t);  //   將T類型轉(zhuǎn)換為R:

	....
	....
	....

}


Case 1 : A List of Strings to Uppercase

/**
     * A List of Strings to Uppercase
     */
    public static void StringsListToUppercase() {
        List<String> list = Arrays.asList("a", "b", "c", "d");

        // before java 8
        List<String> newList = new ArrayList<>();
        for (String str : list) {
            newList.add(str.toUpperCase());
        }
        System.out.println(newList);

        // java 8
        List<String> collect = list.stream().map(String::toUpperCase).collect(Collectors.toList());
        System.out.println(collect);

        // Extra, streams apply to any data type.
        List<Integer> integers = Arrays.asList(1, 2, 3, 4);
        List<Integer> collect1 = integers.stream().map(t -> t * 2).collect(Collectors.toList());
        System.out.println(collect1);

    }

Case 2 : List of objects -> List of String

 /**
     * List of objects -> List of String
     */
    public static void objectsListToStringList() {
        List<Artisan> artisanList = Arrays.asList(
                new Artisan("小A", 18, new BigDecimal(100)),
                new Artisan("小B", 19, new BigDecimal(200)),
                new Artisan("小C", 20, new BigDecimal(300)));

        // Before Java 8
        List<String> nameList = new ArrayList<>();
        for (Artisan artisan : artisanList) {
            nameList.add(artisan.getName());
        }
        log.info(nameList.toString());

        // Java 8
        List<String> collect = artisanList.stream().map(Artisan::getName).collect(Collectors.toList());
        log.info(collect.toString());



    }

Case 3 : List of objects -> List of other objects

/**
     * List of objects -> List of other objects
     */
    public static void objectsListToOtherObjectsList() {

        List<Artisan> artisanList = Arrays.asList(
                new Artisan("小A", 18, new BigDecimal(100)),
                new Artisan("小B", 19, new BigDecimal(200)),
                new Artisan("小C", 20, new BigDecimal(300)));

        // Before Java 8
        List<ArtisanOther> convert2OtherList = new ArrayList<>();

        for (Artisan artisan : artisanList) {
            ArtisanOther artisanOther = new ArtisanOther();
            artisanOther.setAge(artisan.getAge());
            artisanOther.setName(artisan.getName());

            if ("小C".equals(artisan.getName())) {
                artisanOther.setOtherInfo("Only For 小C");
            }
            convert2OtherList.add(artisanOther);
        }
        log.info(convert2OtherList.toString());

        // Java 8
        artisanList.stream().map(artisan -> {
            ArtisanOther artisanOther = new ArtisanOther();
            artisanOther.setAge(artisan.getAge());
            artisanOther.setName(artisan.getName());

            if ("小C".equals(artisan.getName())) {
                artisanOther.setOtherInfo("Only For 小C");
            }
            return artisanOther;
        }).collect(Collectors.toList());
        log.info(convert2OtherList.toString());
    }


Test

    public static void main(String[] args) {
        // A List of Strings to Uppercase
        StringsListToUppercase();

        // List of objects -> List of String
        objectsListToStringList();

        // List of objects -> List of other objects
        objectsListToOtherObjectsList();
    }


	
  // 倆內(nèi)部類 
  @Data
    @NoArgsConstructor
    @AllArgsConstructor
    static class Artisan {
        private String name;
        private int age;
        private BigDecimal salary;
    }

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    static class ArtisanOther {
        private String name;
        private int age;
        private String otherInfo;
    }


[A, B, C, D]
[A, B, C, D]
[2, 4, 6, 8]
21:57:13.914 [main] INFO com.artisan.java8.stream2.StreamMap - [A,B,C]
21:57:13.918 [main] INFO com.artisan.java8.stream2.StreamMap - [A,B,C]
21:57:13.919 [main] INFO com.artisan.java8.stream2.StreamMap - [StreamMap.ArtisanOther(name=A, age=18, otherInfo=null), StreamMap.ArtisanOther(name=B, age=19, otherInfo=null), StreamMap.ArtisanOther(name=C, age=20, otherInfo=Only ForC)]
21:57:13.920 [main] INFO com.artisan.java8.stream2.StreamMap - [StreamMap.ArtisanOther(name=A, age=18, otherInfo=null), StreamMap.ArtisanOther(name=B, age=19, otherInfo=null), StreamMap.ArtisanOther(name=C, age=20, otherInfo=Only ForC)]

stream.map,【Java - Java 8】,java,Streams#map文章來源地址http://www.zghlxwxcb.cn/news/detail-799417.html

到了這里,關(guān)于Java8 - Streams map()的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 使用java8 新特性stream流對(duì)List<Map<String, Object>>集合進(jìn)行遍歷、過濾、查詢、去重、排序、分組

    對(duì)于一個(gè)ListMapString, Object類型的數(shù)據(jù),可以使用Java 8的新特性stream流來進(jìn)行遍歷、過濾、查詢、去重、排序、分組等操作。 遍歷: 過濾: 查詢: 去重: 排序: 分組:

    2024年02月10日
    瀏覽(106)
  • Java 9 響應(yīng)式流(Reactive Streams)

    首先出現(xiàn)響應(yīng)式編程理念,然后出現(xiàn)響應(yīng)式編程實(shí)現(xiàn),再然后出現(xiàn)響應(yīng)式規(guī)范,響應(yīng)流主要解決處理元素流的問題—如何將元素流從發(fā)布者傳遞到訂閱者,不而不需要發(fā)布者阻塞,或者要求訂閱者有無限的緩沖區(qū),有限的緩沖區(qū)在到達(dá)緩沖上界的時(shí)候,對(duì)到達(dá)的元素進(jìn)行丟棄

    2024年02月21日
    瀏覽(21)
  • Java開發(fā)安全之:Unreleased Resource: Streams需確保流得到釋放

    Overview ?java 中的函數(shù) getResponseBytes() 有時(shí)無法成功釋放由? getInputStream() 函數(shù)分配的系統(tǒng)資源。 Details 程序可能無法成功釋放某一項(xiàng)系統(tǒng)資源。 在這種情況下,在某些程序路徑上,所分配的資源未釋放。 資源泄露至少有兩種常見的原因: - 錯(cuò)誤狀況及其他異常情況。 - 未

    2024年01月21日
    瀏覽(30)
  • Java8 Stream流的合并

    最近的需求里有這樣一個(gè)場(chǎng)景,要校驗(yàn)一個(gè)集合中每個(gè)對(duì)象的多個(gè)Id的有效性。比如一個(gè)Customer對(duì)象,有3個(gè)Id: id1 , id2 , id3 ,要把這些Id全部取出來,然后去數(shù)據(jù)庫里查詢它們是否存在。 通常情況下,我們都是從集合中取出對(duì)象的某一個(gè)字段,像這樣: 現(xiàn)在要取3個(gè)字段,

    2024年02月02日
    瀏覽(29)
  • Java8 函數(shù)式編程stream流

    Java 8 中新增的特性旨在幫助程序員寫出更好的代碼,其中對(duì)核心類庫的改進(jìn)是很關(guān)鍵的一部分,也是本章的主要內(nèi)容。對(duì)核心類庫的改進(jìn)主要包括集合類的 API 和新引入的流(Stream),流使程序員得以站在更高的抽象層次上對(duì)集合進(jìn)行操作。下面將介紹stream流的用法。 ?場(chǎng)景

    2024年02月15日
    瀏覽(21)
  • Java8的Stream流的學(xué)習(xí)

    Stream可以由數(shù)組或集合創(chuàng)建,對(duì)流的操作分為兩種: 中間操作,每次返回一個(gè)新的流,可以有多個(gè)。 終端操作,每個(gè)流只能進(jìn)行一次終端操作,終端操作結(jié)束后流無法再次使用。終端操作會(huì)產(chǎn)生一個(gè)新的集合或值。 stream和parallelStream的簡(jiǎn)單區(qū)分:?stream是順序流,由主線程按

    2024年02月07日
    瀏覽(26)
  • Java8中Stream詳細(xì)用法大全

    Java8中Stream詳細(xì)用法大全

    Java 8 是一個(gè)非常成功的版本,這個(gè)版本新增的Stream,配合同版本出現(xiàn)的Lambda ,給我們操作集合(Collection)提供了極大的便利。Stream流是JDK8新增的成員,允許以聲明性方式處理數(shù)據(jù)集合,可以把Stream流看作是遍歷數(shù)據(jù)集合的一個(gè)高級(jí)迭代器。Stream 是 Java8 中處理集合的關(guān)鍵抽

    2023年04月08日
    瀏覽(31)
  • Java8 Stream流處理樹形結(jié)構(gòu)數(shù)據(jù)

    參考資料 Java8新特性-使用Stream流遞歸實(shí)現(xiàn)遍歷樹形結(jié)構(gòu) ID為2,6,11的Menu 是 ID為1的Menu子節(jié)點(diǎn) ID為3,4,5的Menu 是 ID為2的Menu子節(jié)點(diǎn) ?? 注意 是下面這種寫法的一種更簡(jiǎn)單的寫法

    2024年02月01日
    瀏覽(21)
  • Java8 Stream 之groupingBy 分組講解

    本文主要講解:Java 8 Stream之Collectors.groupingBy()分組示例 Collectors.groupingBy() 分組之常見用法 功能代碼: /** ?? ? * 使用java8 stream groupingBy操作,按城市分組list ?? ? */ ?? ?public void groupingByCity() { ?? ??? ?MapString, ListEmployee map = employees.stream().collect(Collectors.groupingBy(Employee::getCi

    2024年02月13日
    瀏覽(25)
  • java8 Stream流常用方法(持續(xù)更新中...)

    java8 Stream流常用方法(持續(xù)更新中...)

    操作對(duì)象 模擬數(shù)據(jù) 操作 打印結(jié)果 打印結(jié)果 注意:異常自己捕捉,就比如這里String轉(zhuǎn)Intger就可能出現(xiàn)NumberFormatException異常 打印結(jié)果 打印結(jié)果 斷點(diǎn)查看 打印結(jié)果 斷點(diǎn)查看 持續(xù)更新中…

    2024年04月28日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包