亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

JAVA Stream用法

itvincent / 2597人閱讀

摘要:中提出一個集合流的抽象工具,簡稱,用于集合內(nèi)元素的計算,更確切的說是過濾和統(tǒng)計操作。返回由新元素組成的。返回基本類型對應(yīng)的。主要用來查看流中元素的數(shù)據(jù)狀態(tài)。聚合操作,最小值,最大值,總數(shù)量。短路操作,有一個符合條件返回。

Stream(流)在JAVA已經(jīng)不是一個新詞了。很早之前我們就接觸過JAVA中的輸入輸出流(IO Stream),它是對數(shù)據(jù)輸入輸出操作的抽象封裝。JAVA8中提出一個集合流的抽象工具(java.util.stream,簡稱Stream),用于集合內(nèi)元素的計算,更確切的說是過濾和統(tǒng)計操作。

Stream創(chuàng)建

Stream不是一種真實(shí)的數(shù)據(jù)源(不存在數(shù)據(jù)結(jié)構(gòu)),所以我們沒有辦法直接來創(chuàng)建它,Stream只能依賴其他數(shù)據(jù)源來轉(zhuǎn)換成我們的抽象操作。Stream本身是不存在,只是我們抽象出來的一個抽象操作,經(jīng)過各種操作之后,Stream還需要轉(zhuǎn)換成真實(shí)的數(shù)據(jù)源。

常見創(chuàng)建方式如下:

Collection

parallelStream()

stream()

Stream.of(...)

Arrays.stream(...)

Stream.generate(...)

Stream.iterate(seek, unaryOperator)

BufferedReader

lines()

其實(shí)最終都是依賴StreamSupport類來完成Stream創(chuàng)建的。

Stream操作

To perform a computation, stream operations are composed into a stream pipeline. A stream pipeline consists of a source (which might be an array, a collection, a generator function, an I/O channel, etc), zero or more intermediate operations (which transform a stream into another stream, such as filter(Predicate)), and a terminal operation (which produces a result or side-effect, such as count() or forEach(Consumer)). Streams are lazy; computation on the source data is only performed when the terminal operation is initiated, and source elements are consumed only as needed.

Stream操作由零個或多個中間操作(intermediate operation)和一個結(jié)束操作(terminal operation)兩部分組成。只有執(zhí)行結(jié)束操作時,Stream定義的中間操作才會依次執(zhí)行,這就是Stream的延遲特性。

中間操作

filter

Returns a stream consisting of the elements of this stream that match the given predicate.

返回一個符合條件的Stream。

map

Returns a stream consisting of the results of applying the given function to the elements of this stream.

返回由新元素組成的Stream。

mapToInt、mapToLong、mapToDouble

返回int、long、double基本類型對應(yīng)的Stream。

flatMap

Returns a stream consisting of the results of replacing each element of this stream with the contents of a mapped stream produced by applying the provided mapping function to each element. Each mapped stream is closed after its contents have been placed into this stream. (If a mapped stream is null an empty stream is used, instead.)

簡單的說,就是一個或多個流合并成一個新流。

flatMapToInt、flatMapToLong、flatMapToDouble

返回對應(yīng)的IntStream、LongStream、DoubleStream流。

distinct

返回去重的Stream。

sorted

返回一個排序的Stream。

peek

主要用來查看流中元素的數(shù)據(jù)狀態(tài)。

limit

返回前n個元素數(shù)據(jù)組成的Stream。屬于短路操作

skip

返回第n個元素后面數(shù)據(jù)組成的Stream。

結(jié)束操作

forEach

循環(huán)操作Stream中數(shù)據(jù)。

forEachOrdered

暗元素順序執(zhí)行循環(huán)操作。

toArray

返回流中元素對應(yīng)的數(shù)組對象。

reduce

聚合操作,用來做統(tǒng)計。

collect

聚合操作,封裝目標(biāo)數(shù)據(jù)。

min、max、count

聚合操作,最小值,最大值,總數(shù)量。

anyMatch

短路操作,有一個符合條件返回true。

allMatch

所有數(shù)據(jù)都符合條件返回true。

noneMatch

所有數(shù)據(jù)都不符合條件返回true。

findFirst

短路操作,獲取第一個元素。

findAny

短路操作,獲取任一元素。

總結(jié)

Stream每個操作都是依賴Lambda表達(dá)式或方法引用。

Stream操作是一種聲明式的數(shù)據(jù)處理方式。

Stream操作提高了數(shù)據(jù)處理效率、開發(fā)效率。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/70791.html

相關(guān)文章

  • Stream API和Optional類學(xué)習(xí)筆記

    摘要:用于對流進(jìn)行排序。三最終操作用于迭代流中的每個元素,并執(zhí)行相應(yīng)的操作。類類也是的新特性,用于有效解決問題。與的功能一樣,不過接受一個函數(shù)式接口來生成對象為空則拋出異常與使用類似與使用類似這是一種級聯(lián)的方式,能夠解決方式的嵌套問題。 Stream API Stream API是Java8的新特性,通常用于對集合進(jìn)行一些操作,可以幫助開發(fā)者寫出更高效、整潔的代碼。 一、Stream流的創(chuàng)建...

    geekidentity 評論0 收藏0
  • Java8-流

    摘要:因此,使用并行流需要考慮以下幾點(diǎn)數(shù)據(jù)量將問題分解之后并行化處理,再將結(jié)果合并會帶來額外的開銷。 目錄 簡介 用法 例子 注意點(diǎn) 一. 簡介 流是Java8引入的一個新特性,提供了對集合元素一系列便捷的操作,可以用很少的代碼實(shí)現(xiàn)復(fù)雜的功能。流有兩大類,分別是對象流(Stream),基本數(shù)據(jù)流(IntStream、LongStream、DoubleStream)。 二.用法 流的使用通...

    whinc 評論0 收藏0
  • Java 8之stream介紹和使用

    摘要:使用我們來看下面這段代碼,里面有一個屬性代表菜品的卡路里值,現(xiàn)在的需求是按卡路里對菜品進(jìn)行排序再返回菜名,并且要求卡路里的值大于。 前言: 在實(shí)際開發(fā)中經(jīng)常需要獲取各種各樣不同格式的數(shù)據(jù),因?yàn)閿?shù)據(jù)庫的表結(jié)構(gòu)是一開始就設(shè)計好的所以很多時候我們不得不先從數(shù)據(jù)庫里或其他地方獲得數(shù)據(jù)后再根據(jù)需求去一層一層的篩選數(shù)據(jù),在Java 8之前的做法不外乎就是各種List、Set一起上,各種循環(huán)判斷。如...

    gxyz 評論0 收藏0
  • Java 8之stream進(jìn)階

    摘要:獲取每個元素的字符串長度放入新流中,然后轉(zhuǎn)為類型。歸約歸約就是把整個流歸約成一個值的操作,比如求集合中最大的元素所有元素值的和之類的操作。 前言: 上一篇文章 Java 8之stream介紹和使用 中講解了stream的定義和用法,簡單介紹幾個最基本最常用的方法,其實(shí)stream還有更強(qiáng)大的功能,這篇文章就會給大家介紹stream的進(jìn)階用法。 篩選: 在上一篇文章中我們介紹了使用fi...

    Jaden 評論0 收藏0
  • Java8之Consumer、Supplier、Predicate和Function攻略

    摘要:接口有一個方法,可以返回值。在上面的代碼中,就是獲取字符串的長度,然后將每個字符串的長度作為返回值返回。 今天我們還講講Consumer、Supplier、Predicate、Function這幾個接口的用法,在 Java8 的用法當(dāng)中,這幾個接口雖然沒有明目張膽的使用,但是,卻是潤物細(xì)無聲的。為什么這么說呢? 這幾個接口都在 java.util.function 包下的,分別是Con...

    pepperwang 評論0 收藏0

發(fā)表評論

0條評論

itvincent

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<