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

Java中stream流的常見(jiàn)用法

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

Java中stream流的常見(jiàn)用法

這篇文章主要是記錄stream流的用法,因?yàn)閟tream流比較常用,并且一些操作較復(fù)雜,記錄在此,以后參考。

1、filter用法

主要是用來(lái)過(guò)濾集合中的元素,較常用。

        List<User> list = new ArrayList<>();
        list.add(new User(1, "小趙", "beijing"));
        list.add(new User(2, "小錢(qián)", "shanghai"));
        list.add(new User(3, "小孫", "tianjin"));
        list.add(new User(4, "小李", "nanjing"));
        list.add(new User(5, "小周", "shenzhen"));

        // 過(guò)濾出address=tianjin的
        List<User> list1 = list.stream().filter(item -> "tianjin".equals(item.getAddress())).collect(Collectors.toList());
        System.out.println(list1);

2、peek用法

主要是用來(lái)修改元素的狀態(tài),比如其中對(duì)象的字段等

        List<User> list = new ArrayList<>();
        list.add(new User(1, "小趙", "beijing"));
        list.add(new User(2, "小錢(qián)", "shanghai"));
        list.add(new User(3, "小孫", "tianjin"));
        list.add(new User(4, "小李", "nanjing"));
        list.add(new User(5, "小周", "shenzhen"));

        // peek操作主要用于修改集合中的元素
        // 修改元素中的address為guangzhou
        List<User> list2 = list.stream().peek(item -> item.setAddress("guangzhou")).collect(Collectors.toList());
        System.out.println(list2);

3、map用法

主要是用來(lái)替換集合中的元素

        List<User> list = new ArrayList<>();
        list.add(new User(1, "小趙", "beijing"));
        list.add(new User(2, "小錢(qián)", "shanghai"));
        list.add(new User(3, "小孫", "tianjin"));
        list.add(new User(4, "小李", "nanjing"));
        list.add(new User(5, "小周", "shenzhen"));

        // map操作主要是修改集合元素本身,也有一部分peek的功能
        // 將list的元素替換成元素的字段或者替換成其他的對(duì)象
        List<Integer> list3 = list.stream().map(User::getId).collect(Collectors.toList());
        System.out.println(list3);
        // map也可以用來(lái)peek的功能,比如下面例子,不過(guò)idea會(huì)提示用peek的
        List<User> list4 = list.stream().map(item -> {
            item.setAddress("beijing");
            return item;
        }).collect(Collectors.toList());
        System.out.println(list4);

4、flatmap用法

主要是將集合中的元素?fù)Q成stream流

        List<String> list1 = Arrays.asList("a", "b");
        List<String> list2 = Arrays.asList("1", "2", "3");

        // flatmap主要是將集合中的元素?fù)Q成stream流
        List<String> list3 = list1.stream().flatMap(item -> list2.stream().map(i -> item + i)).collect(Collectors.toList());
		// 將list1和list2中的元素拼接成list3
        // [a1, a2, a3, b1, b2, b3]
        System.out.println(list3);

5、list轉(zhuǎn)map用法

這種場(chǎng)景是用于根據(jù)對(duì)象已知字段查找集合中對(duì)應(yīng)元素

 		List<User> list = new ArrayList<>();
        list.add(new User(1, "小趙", "beijing"));
        list.add(new User(2, "小錢(qián)", "shanghai"));
        list.add(new User(3, "小孫", "tianjin"));
        list.add(new User(4, "小李", "nanjing"));
        list.add(new User(5, "小周", "shenzhen"));

        // 將list轉(zhuǎn)成map
        // 一般這種場(chǎng)景是用于根據(jù)對(duì)象已知字段查找集合中對(duì)應(yīng)元素
        // 這種一般用于key是唯一的,不然異常,或者用下一種
        Map<Integer, User> map = list.stream().collect(Collectors.toMap(User::getId, Function.identity()));
        Map<Integer, User> map1 = list.stream().collect(Collectors.toMap(User::getId, Function.identity(), (key1, key2) -> key2));

6、分組用法

這種一般用于按照元素的字段等條件進(jìn)行分組文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-528652.html

        List<User> list = new ArrayList<>();
        list.add(new User(1, "小趙", "beijing"));
        list.add(new User(2, "小錢(qián)", "shanghai"));
        list.add(new User(3, "小孫", "tianjin"));
        list.add(new User(4, "小李", "nanjing"));
        list.add(new User(5, "小周", "shenzhen"));

        Map<Integer, List<User>> map = list.stream().collect(Collectors.groupingBy(User::getId));

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

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(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流的合并

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

    2024年02月02日
    瀏覽(29)
  • Java,SpringBoot中對(duì)Stream流的運(yùn)用

    詳細(xì)參考:java 1.8 stream 應(yīng)用-22種案例_java1.8 流案例-CSDN博客 1. 遍歷 ?2. 匯總

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

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

    2024年02月07日
    瀏覽(26)
  • Java8特性,Stream流的使用,收集成為map集合

    Java 8引入了Stream API,這是Java集合操作的一個(gè)重大改進(jìn)。Stream API提供了一種高效且易于使用的處理數(shù)據(jù)的方式。 Stream是數(shù)據(jù)渠道,用于操作數(shù)據(jù)源(集合、數(shù)組等)所生成的元素序列。注意:Stream自己不會(huì)存儲(chǔ)元素,它不會(huì)改變?cè)磳?duì)象,反而它的操作會(huì)返回一個(gè)全新的Strea

    2024年04月22日
    瀏覽(100)
  • 帶你走進(jìn)Java8新特性Stream流的小世界

    帶你走進(jìn)Java8新特性Stream流的小世界

    目錄 一. 什么是流(Stream) 1.1 流的定義 1.2 流的特點(diǎn) 1.3?操作流 1.4 創(chuàng)建流 二. 流的中間操作 2.1 流的篩選與切片 2.1.1 filter 2.1.2 limit 2.1.3 skip 2.1.4 distinct 2.2 流的映射 2.2.1 map 2.2.2 flatMap 2.3 流的排序 2.3.1 sort 三. 流的終止操作 3.1 流的查找與匹配 3.1.1 allMatch 3.1.2 anyMatch 3.1.3 none

    2024年01月24日
    瀏覽(37)
  • Java中Steam流的用法及使用備忘

    1-1 使用Collection下的 stream() 和 parallelStream() 方法 1-2 使用Arrays 中的 stream() 方法,將數(shù)組轉(zhuǎn)成流 1-3 使用Stream中的靜態(tài)方法:of()、iterate()、generate() 1-4 使用 BufferedReader.lines() 方法,將每行內(nèi)容轉(zhuǎn)成流 1-5 使用 Pattern.splitAsStream() 方法,將字符串分隔成流 2-1 篩選、去重與切片:

    2023年04月08日
    瀏覽(16)
  • java通過(guò)stream流的形式把列表中某個(gè)字段的值取出并生成列表

    可以使用Java 8中引入的Stream API來(lái)實(shí)現(xiàn)這一功能。例如,假設(shè)你有一個(gè)類(lèi)名為Person的列表,并且你想要從這個(gè)列表中提取所有人的姓名并生成一個(gè)新的列表。你可以這樣做: 這段代碼首先使用 stream() 方法將列表轉(zhuǎn)換為流。然后,使用 map() 方法對(duì)流中的每個(gè)元素執(zhí)行一個(gè)轉(zhuǎn)換函

    2024年02月12日
    瀏覽(25)
  • 深度解析Java JDK 1.8中Stream流的源碼實(shí)現(xiàn):帶你探尋數(shù)據(jù)流的奧秘

    深度解析Java JDK 1.8中Stream流的源碼實(shí)現(xiàn):帶你探尋數(shù)據(jù)流的奧秘

    1.1 什么是Stream流,以及它的主要特點(diǎn)和優(yōu)勢(shì) 什么是Stream流 ? jdk1.8 中引入的Stream流是一種用 函數(shù)式編程方式 操作集合的新特性,提供了一種更簡(jiǎn)潔、高效的方式來(lái)處理集合數(shù)據(jù),可以將集合操作轉(zhuǎn)換為一系列的流水線(xiàn)操作,實(shí)現(xiàn)更加優(yōu)雅和功能強(qiáng)大的數(shù)據(jù)處理。 主要特點(diǎn)

    2024年03月16日
    瀏覽(37)
  • 由于對(duì)象流解析的數(shù)據(jù)與流的頭部信息不匹配導(dǎo)致異常 java.io.StreamCorruptedException: invalid stream header: 7372001

    錯(cuò)誤原因 先直接說(shuō)錯(cuò)誤原因 當(dāng)使用對(duì)象流時(shí),對(duì)象頭和對(duì)象內(nèi)容一起被寫(xiě)入輸出流,而讀取時(shí)也需要以相同的順序讀取對(duì)象頭和對(duì)象內(nèi)容 如果讀取時(shí)的順序與寫(xiě)入時(shí)的順序不一致,或者在寫(xiě)入或讀取對(duì)象頭和對(duì)象內(nèi)容之間更改了流的狀態(tài),則會(huì)出現(xiàn) java.io.StreamCorruptedExcept

    2024年02月05日
    瀏覽(30)
  • java stream中的peek()用法

    java stream中的peek()用法

    最近看到一段代碼: 之前沒(méi)有用過(guò)peek,于是查了一下,peek的作用是: 改變?cè)氐膬?nèi)部狀態(tài) 從這句話(huà)中可以看出,上面代碼的意思是:對(duì)每個(gè) object 執(zhí)行 saveInfomation(object, params) ,然后把結(jié)果收集到一個(gè) List 里。 這里涉及到了 最終操作 。 peek() 并不是一個(gè)最終操作(termina

    2024年02月08日
    瀏覽(44)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包