1. ??
Java 8? ???? ?? ??? ? ?? ?? ???? ?? Stream API? ?????. ?? ??? ? ?? Stream ?? ??? map(Function super T, ?extends R> ??)
? flatMap(Function super T, ?extends Stream<?extends )? ?? ??? ????. R>> ??)
map(Function super T, ? extends R> mapper)
和 flatMap(Function super T, ? extends Stream extends R>> mapper)
【推薦學(xué)習(xí):java視頻教程】
2. map 操作
map
操作是將流中的元素進(jìn)行再次加工形成一個(gè)新流。這在開(kāi)發(fā)中很有用。比如我們有一個(gè)學(xué)生集合,我們需要從中提取學(xué)生的年齡以分析學(xué)生的年齡分布曲線。
放在 Java 8 之前 我們要通過(guò)新建一個(gè)集合然后通過(guò)遍歷學(xué)生集合來(lái)消費(fèi)元素中的年齡屬性?,F(xiàn)在我們通過(guò)很簡(jiǎn)單的流式操作就完成了這個(gè)需求。
示意圖:
對(duì)應(yīng)的偽代碼:
?//?偽代碼 ?List<integer>?ages=studentList.stream().map(Student::getAge).collect(Collectors.toList());</integer>
3. flatMap 操作
通過(guò)上面的例子,map
操作應(yīng)該非常好理解。那么 flatMap
是干嘛的呢? 這樣我們把上面的例子給改一下,如果是以班級(jí)為單位,提取所有班級(jí)下的所有學(xué)生的年齡以分析學(xué)生的年齡分布曲線。這時(shí)我們使用上面的方法還行得通嗎?
?List<list>>?studentGroup=?gradeList.stream().map(Grade::getStudents).collect(Collectors.toList());</list>
通過(guò)上面的一頓操作,我們只能得到每個(gè)班的學(xué)生集合的集合 List<list>></list>
。 我們還需要嵌套循環(huán)才能獲取學(xué)生的年齡數(shù)據(jù),十分不便。如果我們能返回全部學(xué)生的集合 List<students></students>
就方便多了。 沒(méi)錯(cuò)!flatMap
可以搞定!
?//?flatMap?提取?List<students>??map?提取年齡 ?List<integer>?ages?=?grades.stream().flatMap(grade?->?grade.getStudents().stream()).map(Student::getAge).collect(Collectors.toList());</integer></students>
正如上面的偽代碼所示,我們使用 flatMap
將所有的學(xué)生匯聚到一起。然后再使用 map
操作提取年齡。 flatMap
不同于 map
地方在于 map
只是提取屬性放入流中,而 flatMap 先提取屬性放入一個(gè)比較小的流,然后再將所有的流合并為一個(gè)流。有一種 “聚沙成塔” 的感覺(jué)。
再畫(huà)一張圖來(lái)加深理解:
4. 總結(jié)
map
操作和 flatMap
操作一旦你熟悉了,可以非常簡(jiǎn)便地解決一些數(shù)據(jù)流的操作問(wèn)題。擴(kuò)展一下知識(shí),其實(shí)Java 8 中 不光 Stream 中存在這兩種操作,其實(shí) Optional<t></t>
?
??? ???? ??? ????? ??? ???? ???? ????. ?? ??? ?????. ?? ??, ?? ???? ???, ???? ??? ?? ?? ??? ???? ?? ??? ??? ???? ???. ??Java 8?? ???? ? ???? ??? ?? ?? ???? ???? ??? age ??? ???? ???. ?? ??? ?? ??? ???? ??? ?? ? ?? ??? ??????. ???????: ????

map
??? ?? ???? ??? ???. ???? flatMap
? ??? ?? ???? ?? ??? ?? ?? ?? ???? ????, ?? ??? ?? ??? ??? ???? ??? ?? ?? ??? ?????. ?? ?? ??? ???? ?? ??? ?????? ??rrreee??? ??? ?? ? ?? List<list>></list>
? ?? ??? ???? ??? ? ????. ?? ??? ?? ???? ???? ?? ??? ????? ?? ?? ?????. ?? ??? List<students></students>
???? ??? ? ??? ?? ? ??? ????. ???! ???
? ?????! ??rrreee???? ?? ???? ? ? ??? flatMap
? ???? ?? ???? ??? ????. ?? ?? map
??? ???? ??? ?????. flatMap
? map
? ????. map
? ??? ???? ???? ?? ?? flatMap? ?? ??? ???? ? ?? ???? ????. ???? ??? ?? ?? ???? ??? ????? ?????. "??? ?? ?? ???" ??? ???. ????? ?? ??? ?? ?? ??? ?????: ????
map
??? FlatMap
??? ????? ?? ???? ?? ?? ??? ? ????. ??? ?? ??? ?? ??? ? ????. ??? Java 8??? ??? ???? ?? ? ? ?? ??? Stream?? ??? Optional<t></t>
?? ???? ?? ??? ?????. ????? ??? ??Java ?????? ???? ??? ????. ??? ?????! ??? ??? Java8 Stream Api? map ? flatMap ??? ?? ??? ??? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

JDBC ????? ???? ????? ?? ?? ?? ??? ?? ?? ??? ?? ? ?? ??? ?? ?? ?? ??? ???????. 1. ????? ????? Conn.SetAutoCommit (False)?? ??????. 2. ??? ? ????? ?? ?? SQL ??? ?????. 3. ?? ??? ??? ?? Conn.commit ()?? ???? ??? ???? ???? ?? ??? ???? Conn.Rollback ()?? ??????. ???, ? ??? ???? ????, ??? ???? ????, ?? ??? ??? ?? ??? ??? ???? ? ???????. ?? ?? ?? ???? ????? ??? ???? ?? ?? ???? ???? ??? ????? ?? ??? ??? ? ?? ???? ?? ????.

?? ?? ? ?? ???? ???? ?? Java.Time ???? ???? ??????. 2. LocalDate, LocalDateTime ? LocalTime? ?? ?? ??? ??? ?????. 3. () ???? ???? ?? ??? ??? ????. 4. ???/???? ??? ???? ??? ????? ??? ??????. 5. ZonedDateTime ? Zoneid? ???? ???? ??????. 6. DateTimeFormatter? ?? ?? ? ?? ?? ?? ???; 7. ??? ?? ?? ?? ??? ????? ?? ??????. ?? Java? ?? ??? ???? ??? ??? ???? Java.Timeapi ??? ?? ??? ???????.

Pre-FormancetArtUptimeMoryUsage, Quarkusandmicronautleadduetocompile-timeprocessingandgraalvsupport, withquarkusoftenperforminglightbetterine serverless sinarios.2.thyvelopecosyste,

Java 's Garbage Collection (GC)? ???? ???? ???? ??????, ?? ? ??? ??? ? ??? ??? ??? ??? ????. 1.GC? ?? ?? (? : ?? ??, ?? ???, ?? ?? ?)?? ??? ???? ????, ?? ? ??? ??? ???? ?????. 2. ?? ???? ????? ????, ?? ?? ??? ??? ???? ?? ??? ??????. 3. ?? ?? ?? ?? : ??? ?? (Eden, S0, S1)? ?? ????? ?????. ??? ??? ?? ? MajorGC? ???? ? ??? ? ????. Metaspace? ??? ?? ???? ?????. 4. JVM? ??? GC ??? ?????. SerialGC? ??? ?? ????? ?????. ParallelGC? ???? ??????. CMS? ?? ???

GO? HTTP ?? ????? ?? ??, ??, ????? IP ? ?? ??? ?? ? ? ????. 1. http.handlerfunc? ???? ????? ????, 2. ??? ???? ?? ?? ??? ?? ??? ??????. ?? ?? ??? ???? ??? ?????? ??? ????? ???? ? ?????. ?? ???? ?? ?? ??, JSON ?? ?? ? ?? ID ??? ?????.

??? htmlinput ??? ???? ??? ???? ????? ??? ??? ?? ??? ???? ???? ? ????. 1. ???, ???, ??, ?? ? ??? ?? ??? ??? ?? ?? ?? ??? ???? ???? ??? ? ???? ??? ? ????. 2. HTML5? ?????? ??? ? ?? ?? ??? ?? ? ??? URL, ??, ?? ? ??? ?? ??? ??? ??????. 3. ?? ?? ? ? ??? ??? ???? ?? ??? ???? ???? ?? ???? ?? ???? ???? ?? ? ? ??? ?? ???????.

GradleisBetTerChoiceFormostNewProjectSduetoitssuperiorflexible, Performance, and ModernToolingsupport.1.Gradle'Sgroovy/kotlindslismoreConcisENDEXPRESSIVETHANMAVEN'SVOSEXML.2.GradleOutsMaveninbuildweedweedweedweedweedweedweedweedweedweedweedweedweedweede

DEFER? ??? ???? ?? ??? ??? ???? ? ?????. ?? ??? ?? ? ? ?? ????, ??? ??? ? ?? ?? (LIFO)? ??? ?????. 1. ?? ??? ??? ? ??? ?????. 2. ?? ??? ?? ??? ??? ????? ?????. 3. ?? ? ?? ?? ??? ? ????. 4. ??? ?????? ??? ??? ???? ?????. 5. ?? ??? ???? ?? ??? ?? ??? ?????. ??? ??? ?? ?? ? ???? ???? ? ????.
