成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java流Map和FlatMap之間的區(qū)別

開發(fā) 前端
Java 8為我們提供了使用map和flatMap方法,可以在Stream和Optional上進行元素轉(zhuǎn)換處理,flatMap可以處理Collection數(shù)組扁平化。

概述

map和flatMap API源于Java Stream流,在Java8中可以在Optional、Stream和CompletableFuture中找到相關(guān)用法。

Stream流表示一系列對象,而Optional表示對象存在或不存在的類,在不同的聚合操作中包括有map和flatMap方法。

Optional使用Map和Flatmap

map方法與Optional配合得很好,比如返回需要的確切類型:

Optional<String> s = Optional.of("test");
assertEquals(Optional.of("TEST"), s.map(String::toUpperCase));

使用map會導(dǎo)致嵌套結(jié)構(gòu),因為map實現(xiàn)會在內(nèi)部進行額外的包裝:

assertEquals(Optional.of(Optional.of("STRING")), 
  Optional
  .of("string")
  .map(s -> Optional.of("STRING")));

正如我們所看到的,最終得到了嵌套結(jié)構(gòu)Optional<Optional<String>。雖然它可以工作,但使用起來相當麻煩,所以最好保持扁平化的結(jié)構(gòu)。

這正是flatMap可以做到的:

assertEquals(Optional.of("STRING"), Optional
  .of("string")
  .flatMap(s -> Optional.of("STRING")));

Streams使用Map和Flatmap

map方法將底層序列封裝在Stream實例中,而flatMap方法允許避免嵌套的Stream<Stream<R>>結(jié)構(gòu)。

比如以下例子,map生成一個Stream,該Stream由將toUpperCase方法應(yīng)用于輸入Stream的元素組成:

List<String> myList = Stream.of("a", "b")
  .map(String::toUpperCase)
  .collect(Collectors.toList());
assertEquals(asList("A", "B"), myList);

map在這樣一個簡單的情況下工作得很好。但是,如果更復(fù)雜的比如一個包含多個列表的列表作為輸入,讓我們看看它是如何工作的:

List<List<String>> list = Arrays.asList(
  Arrays.asList("a"),
  Arrays.asList("b"));
System.out.println(list);

此片段打印:[[a],[b]]

現(xiàn)在讓我們使用flatMap:

System.out.println(list
  .stream()
  .flatMap(Collection::stream)
  .collect(Collectors.toList()));

片段的結(jié)果將被扁平化為[a,b]。

flatMap方法首先將輸入的多級Stream扁平化為同級Stream,之后,它的工作原理與map方法類似。

結(jié)論

Java 8為我們提供了使用map和flatMap方法,可以在Stream和Optional上進行元素轉(zhuǎn)換處理,flatMap可以處理Collection數(shù)組扁平化。

責任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2024-09-09 13:10:14

2024-09-03 10:06:43

JavaMap項目

2021-02-14 10:06:54

RPAAICIO

2020-06-09 07:00:00

RHELCentOSFedora

2009-01-19 13:35:57

ETLEAI數(shù)據(jù)倉庫

2023-03-29 08:35:11

RMANBackupSets

2011-03-17 15:48:32

jQuery

2022-09-14 11:17:13

云計算邊緣計算

2025-04-28 10:13:03

JavaScript數(shù)組代碼

2020-12-22 14:11:45

JS forEach()map()

2024-03-17 20:01:51

2018-02-28 11:34:20

2025-06-06 04:00:00

2018-05-21 21:26:59

Apache HiveHbaseSQL

2021-01-29 15:10:32

機器學(xué)習(xí)

2012-04-27 09:24:44

程序員編碼員

2022-04-07 16:03:36

JavaScriptTypeScript

2023-06-14 08:54:09

Map方法ForEach方法

2013-09-11 09:49:18

Java數(shù)組集合

2020-08-02 23:20:36

JavaScriptmap()forEach()
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久影音先锋 | 麻豆精品一区二区三区在线观看 | 免费黄网站在线观看 | a在线视频| 欧美一级片在线 | 黄色一级大片视频 | 亚洲电影第1页 | 欧美国产日韩一区 | 亚洲精品电影网在线观看 | 国产精品视频在线观看 | 美女毛片免费看 | 成人亚洲精品久久久久软件 | 一区二区三区成人 | 免费看啪啪网站 | 日本不卡一区二区三区在线观看 | 中文一区二区 | 亚洲精品乱码久久久久久9色 | 国产精品久久久久久模特 | 国产美女在线观看 | 精品一区二区三区在线观看国产 | 欧美一级在线 | 欧美在线观看一区 | 久久av一区二区三区 | 麻豆久久精品 | 欧美色专区 | 亚洲免费视频在线观看 | 国产精品免费观看视频 | 天天爽夜夜爽精品视频婷婷 | 婷婷免费在线 | 久久99国产精品 | 男人天堂久久 | 久久久一区二区 | 在线观看不卡av | 不用播放器看的av | 国产精品亚洲精品日韩已方 | 一级片在线免费看 | 国产伊人精品 | 欧美视频在线一区 | 亚洲精品视频网站在线观看 | www..99re| 久久久久久久电影 |