...
Det er flere andre metoder som ligner på anyMatch: allMatch (alle element i en stream tilfredsstiller predikatet), noneMatch (ingen matcher), findAny (returnerer et element som tilfredsstiller predikatet), findFirst (returnerer det første elementet som tilfredsstiller predikatet).
forEach
forEach tar inn en Consumer-instans og kaller denne instansens ene metode på alle elementene i streamen. La oss legge til et år på alle personenes alder.
|
|
---|
Vi kan også kombinere funksjoner på streams, for eksempel filter og forEach. La oss si vi vil legge til et år på alderen til alle gutter under 18:
|
|
---|
Filter
Filter er en svært vanlig operasjon på lister (i likhet med map og reduce som vi nevner senere), som mange programmeringsspråk har støtte for. Filter kalles på en liste, og returnerer en ny liste med kun de elementene som tilfredsstiller et gitt predikat. Den filtrerer med andre ord ut alle element som ikke matcher predikatet. For eksempel: Hvilke personer er over 18 år?
...
Siden filter-funksjonen returnerer en stream, bruker vi collect for å gjøre den til en List.
forEach
Map
Map brukes for å danne en ny liste av en annen liste, der en gitt funksjon blir kalt forEach tar inn en Consumer-instans og kaller denne instansens ene metode på alle elementene i streamen. La oss legge til et år på alle personenes alderlista. For eksempel, for å få en liste over alle aldrene til personene, vil vi kalle getAge-funksjonen på alle personene i lista, og legge aldrene i en ny liste.
|
|
---|
Map tar en instans av typen Function som argument. Du ser kanskje det doble kolonet. Det er en ny operator introdusert i Java 8 som lar en referere til en metode i seg selv, i stedet for returverdien til den metoden. Slik kan vi enkelt gi den metoden vi ønsker som argument.
Det finnes spesielle map-funksjoner også, som mapToInt og mapToDouble. Disse returnerer henholdsvis IntegerStream og DoubleStream, som har hendige metoder som average(), sum(), min() og max().
Reduce
Reduce brukes for å redusere en liste til et enkelt svar. Reduce tar to og to element i lista og kombinerer disse på en gitt måte. Reduce brukes ofte sammen med map. La oss finne totalalderen i lista vår.Vi kan også kombinere funksjoner på streams, for eksempel filter og forEach. La oss si vi vil legge til et år på alderen til alle gutter under 18:
|
|
---|
Grunnen til at vi kaller .get() på slutten er fordi reduce returnerer en objekt av typen Optional. Det er en container-type som kan inneholde et eksisterende objekt, eller null. Dersom det inneholder et faktisk objekt, vil isPresent() returnere true, og get() vil returnere verdien. Reduce kan også ta i bruk det doble kolonet. La oss finne maksimumsalderen:
|
|
---|
...
|
---|