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

熟練掌握J(rèn)ava8新特性之Stream API的全面應(yīng)用

 更新時(shí)間:2021年11月11日 09:57:36   作者:張起靈-小哥  
Stream是Java8的一大亮點(diǎn),是對(duì)容器對(duì)象功能的增強(qiáng),它專注于對(duì)容器對(duì)象進(jìn)行各種非常便利、高效的 聚合操作(aggregate operation)或者大批量數(shù)據(jù)操作。Stream API借助于同樣新出現(xiàn)的Lambda表達(dá)式,極大的提高編程效率和程序可讀性,感興趣的朋友快來看看吧

1.寫在前面

關(guān)于Stream API的內(nèi)容,已經(jīng)基本上說完了。大家可以參考我的這兩篇文章:

深入理解Java8新特性之Stream API的創(chuàng)建方式和中間操作步驟、深入理解Java8新特性之Stream API的終止操作步驟

那么這篇文章主要就是說一個(gè)Stream API的簡單應(yīng)用練習(xí)題。

2.應(yīng)用舉例

首先,我們需要?jiǎng)?chuàng)建一個(gè)交易員類、交易類、存儲(chǔ)這兩個(gè)類對(duì)象的List集合。

package com.szh.java8.exer;
 
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
 
/**
 * 交易員類
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Trader {
 
	private String name;
	private String city;
 
}
package com.szh.java8.exer;
 
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
 
/**
 * 交易類
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Transaction {
 
	private Trader trader;
	private int year;
	private int value;
 
}
    List<Transaction> transactions = Arrays.asList(
            new Transaction(new Trader("Brian", "Cambridge"),2011,300),
            new Transaction(new Trader("Raoul", "Cambridge"),2012,1000),
            new Transaction(new Trader("Raoul", "Cambridge"),2011, 400),
            new Transaction(new Trader("Mario", "Milan"),2012, 710),
            new Transaction(new Trader("Mario", "Milan"),2012, 700),
            new Transaction(new Trader("Alan", "Cambridge"),2012,950)
    );
  • 2.1 找出2011年發(fā)生的所有交易, 并按交易額排序(從低到高)
    @Test
    public void test1() {
        transactions.stream()
                .filter((t) -> t.getYear() == 2011)
                .sorted((t1,t2) -> Integer.compare(t1.getValue(),t2.getValue()))
                .forEach(System.out::println);
    }

  • 2.2 交易員都在哪些不同的城市工作過?
    @Test
    public void test2() {
        transactions.stream()
                .map((t) -> t.getTrader().getCity())
                .distinct()
                .forEach(System.out::println);
    }

  • 2.3 查找所有來自劍橋的交易員,并按姓名排序
    @Test
    public void test3() {
        transactions.stream()
                .filter((t) -> t.getTrader().getCity().equals("Cambridge"))
                .map(Transaction::getTrader)
                .sorted((t1,t2) -> t1.getName().compareTo(t2.getName()))
                .distinct()
                .forEach(System.out::println);
    }

  • 2.4 返回所有交易員的姓名字符串,按字母順序排序
    @Test
    public void test4() {
        transactions.stream()
                .map((t) -> t.getTrader().getName())
                .sorted()
                .forEach(System.out::println);
    }
  • 2.5 有沒有交易員是在米蘭工作的?
    @Test
    public void test5() {
        boolean b = transactions.stream()
                .anyMatch((t) -> t.getTrader().getCity().equals("Milan"));
        System.out.println(b);
    }

  • 2.6 打印生活在劍橋的交易員的所有交易額
    @Test
    public void test6() {
        Optional<Integer> sum = transactions.stream()
                .filter((t) -> t.getTrader().getCity().equals("Cambridge"))
                .map(Transaction::getValue)
                .reduce(Integer::sum);
        System.out.println(sum.get());
//        Integer reduce = transactions.stream()
//                .filter((t) -> t.getTrader().getCity().equals("Cambridge"))
//                .map(Transaction::getValue)
//                .reduce(0, (x, y) -> x + y);
//        System.out.println(reduce);
    }

  • 2.7 所有交易中,最高的交易額是多少
    @Test
    public void test7() {
        Optional<Integer> max = transactions.stream()
                .map((t) -> t.getValue())
                .max(Integer::compare);
        System.out.println(max.get());
    }

  • 2.8 找到交易額最小的交易
    @Test
    public void test8() {
        Optional<Transaction> min = transactions.stream()
                .min((t1, t2) -> Integer.compare(t1.getValue(), t2.getValue()));
        System.out.println(min.get());
    }

以上就是熟練掌握J(rèn)ava8新特性之Stream API的全面應(yīng)用的詳細(xì)內(nèi)容,更多關(guān)于Java8 Stream API的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java  中橋接模式——對(duì)象結(jié)構(gòu)型模式的實(shí)例詳解

    Java 中橋接模式——對(duì)象結(jié)構(gòu)型模式的實(shí)例詳解

    這篇文章主要介紹了Java 中橋接模式——對(duì)象結(jié)構(gòu)型模式的實(shí)例詳解的相關(guān)資料,希望通過本文大家能掌握這部分知識(shí),需要的朋友可以參考下
    2017-09-09
  • window?下?win10?jdk8安裝與環(huán)境變量的配置過程

    window?下?win10?jdk8安裝與環(huán)境變量的配置過程

    這篇文章主要介紹了window?下?win10?jdk8安裝與環(huán)境變量的配置,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • IntelliJ?IDEA的代碼擱置功能實(shí)現(xiàn)

    IntelliJ?IDEA的代碼擱置功能實(shí)現(xiàn)

    本文主要介紹了IntelliJ?IDEA的代碼擱置功能實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Java的Integer緩存池用法

    Java的Integer緩存池用法

    Java的Integer緩存池主要為了提升性能和節(jié)省內(nèi)存,它緩存了-128到127范圍內(nèi)的Integer對(duì)象,因此這些對(duì)象在比較時(shí)會(huì)直接比較引用,而不是值,其他包裝類如Byte、Short、Character也有類似的緩存池
    2025-02-02
  • 記一次springboot中用undertow的坑

    記一次springboot中用undertow的坑

    這篇文章主要介紹了記一次springboot中用undertow的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 淺談MySQL中是如何實(shí)現(xiàn)事務(wù)提交和回滾的

    淺談MySQL中是如何實(shí)現(xiàn)事務(wù)提交和回滾的

    本文主要介紹了MySQL中是如何實(shí)現(xiàn)事務(wù)提交和回滾的,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Mybatis下的SQL注入漏洞原理及防護(hù)方法解析

    Mybatis下的SQL注入漏洞原理及防護(hù)方法解析

    SQL 注入是發(fā)生在 Web 程序中數(shù)據(jù)庫層的安全漏洞,是網(wǎng)站存在最多也是最簡單的漏洞,在實(shí)際項(xiàng)目中,即使使用了 Mybatis 框架,但仍然有可能因?yàn)榫幋a人員安全意識(shí)不足而導(dǎo)致 SQL 注入問題,這篇文章主要介紹了Mybatis下的SQL注入漏洞原理及防護(hù)方法?,需要的朋友可以參考下
    2022-11-11
  • Spring Boot訪問靜態(tài)資源css/js,你真的懂了嗎

    Spring Boot訪問靜態(tài)資源css/js,你真的懂了嗎

    在搭建springboot時(shí)經(jīng)常需要在html中訪問一些靜態(tài)資源,很多朋友不清楚如何在 Spring Boot中訪問靜態(tài)資源,本文給大家?guī)韮煞N解決方案,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • Java數(shù)字圖像處理之圖像灰度處理

    Java數(shù)字圖像處理之圖像灰度處理

    這篇文章主要為大家詳細(xì)介紹了Java數(shù)字圖像處理之圖像灰度處理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 基礎(chǔ)不牢,地動(dòng)山搖,Java基礎(chǔ)速來刷刷

    基礎(chǔ)不牢,地動(dòng)山搖,Java基礎(chǔ)速來刷刷

    基礎(chǔ)不牢,地動(dòng)山搖,快來一起學(xué)習(xí)一下基礎(chǔ)吧,不斷地學(xué)習(xí)就算是基礎(chǔ)也會(huì)有新的認(rèn)知和收獲,加油
    2021-08-08

最新評(píng)論

随州市| 扶风县| 张家港市| 安阳市| 瓮安县| 紫阳县| 邵阳县| 启东市| 益阳市| 衢州市| 漾濞| 丰顺县| 高清| 永靖县| 乌恰县| 教育| 拉萨市| 金沙县| 延津县| 舟山市| 友谊县| 军事| 长泰县| 轮台县| 紫金县| 财经| 宜黄县| 闻喜县| 隆昌县| 徐汇区| 治多县| 苏尼特右旗| 织金县| 巴南区| 平乡县| 始兴县| 芜湖县| 凌源市| 宜黄县| 武平县| 靖边县|