javascript
使用JShell的Java 9 Streams API
這篇文章著眼于使用JShell的Java 9 Streams API。 Streams API的更改以Java 8中Streams的成功為基礎(chǔ),并引入了許多實用程序方法– takeWhile,dropWhile和iterate。 這篇文章延續(xù)了My Top Java 9功能,并使用Jshell探索了這些方法。
流API
Streams API和Lambda是Java 8最成功的功能,而Java 9的更改基于Java 8的一些新實用程序方法
jshell> Stream.of(1,2,3,4,5).takeWhile(p->p<3).forEach(System.out::print); 12現(xiàn)在讓我們返回所有大于3的值,并且我們看到該謂詞立即返回false并且沒有得到任何返回
jshell> Stream.of(1,2,3,4,5).takeWhile(p -> p > 3).forEach(System.out::print);jshell>- 無序列表–直到謂詞失敗的最長值列表,盡管下游可能存在滿足謂詞的值,但不會返回這些值
我們可以在下面看到,即使最后一個元素為1,列表也只返回2,而有序列表將返回1和2 –
jshell> Stream.of(2,3,6,5,1).takeWhile(p -> p < 3).forEach(System.out::print); 2dropWhile提供與takeWhile相反的行為,因此在謂詞為true時刪除記錄。 和以前一樣,我們對排序和未排序列表也有類似的考慮。
- 有序列表–將返回最長的記錄列表,但不包括那些滿足謂詞的元素
- 無序列表–將刪除滿足謂詞的第一條記錄–
dropWhile / takeWhile結(jié)論
結(jié)論是,除非使用代碼可接受的副作用,否則在處理無序列表時需要格外小心。 盡管我無法想到可以接受無序列表的隨機元素的用例,但我確信其中存在一些。
這以類似于for循環(huán)的方式運行。 取一個起始值(T種子),退出條件(謂詞)
hasNext)以及是否具有下一個值(謂詞)
hasNext)
迭代方法附加了退出條件–
jshell> Stream.iterate(1, i -> i < 6, i -> i + 1).forEach(System.out::println); 1 2 3 4 5結(jié)論
dropWhile和takeWhile為Java Streams API提供了一些有用的實用程序方法。 主要含義是流是有序還是無序。 Stream.iterate方法允許我們在Stream內(nèi)部具有for循環(huán)功能。 我期待聽到人們使用這些新方法的經(jīng)驗。
翻譯自: https://www.javacodegeeks.com/2017/11/java-9-streams-api-using-jshell.html
總結(jié)
以上是生活随笔為你收集整理的使用JShell的Java 9 Streams API的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 服务器受到ddos攻击(ddos能入侵服
- 下一篇: 驾驶员备案卡在哪办理手续(驾驶员备案卡在