Kule posti yebhlog, siza kuxoxa ngeempawu zemijelo yeJava 8 kwaye sinike imizekelo eyahlukeneyo yekhowudi.
Imijelo yeJava izisa inkqubo esebenzayo kwiJava kwaye ziyaxhaswa ukuqala kwiJava 8 ke ukuba unenguqulo endala yeJava, kuya kufuneka uphucule uye kuJava 8 ukuze usebenzise iJava Streams.
Ezinye zezibonelelo zemijelo:
Kwiimeko ezininzi, umbhobho wemijelo uqukethe
Umthombo uza kusasaza umjelo wezinto.
Lo mjelo wezinto unokucocwa, ulungiswe, okanye unokubhalwa kwimephu okanye kolunye uluhlu lwemisebenzi esetyenzisiweyo kwinto nganye.
Ekugqibeleni, inokuqokelelwa okanye incitshiswe okanye enye intsebenzo yesiphelo kodwa inye kuphela imisebenzi yesiphelo eyenziweyo.
Umthombo wokusasaza inokuvela kwingqokelela, uluhlu, iiseti, uluhlu lwe-int, ubude, ukuphinda kabini, imitya, njl.
Imisebenzi yokusasaza ziphakathi okanye zinesiphelo:
Eminye yemisebenzi ephakathi ibandakanya:
Ukufumana kuphela ukuphela kwesiphelo kuvunyelwe.
Eminye imizekelo yokunciphisa imisebenzi yile:
Ngoku makhe sijonge ezi ngcamango zingasentla kwimizekelo yekhowudi.
Umzekelo wokuqala ngumjelo opheleleyo. Siza kwenza umjelo opheleleyo usebenzisa IntStream
iklasi kunye nomsebenzi wayo osebenza kuwo osinika uluhlu lwamanani apheleleyo.
I forEach
kukusebenza kwethu kwesiphelo. Kwinto nganye, siza kuyiprinta.
import java.io.IOException; import java.util.stream.IntStream; public class JavaStreams {
public static void main(String[] args) throws IOException {
IntStream
.range(1, 10)
.forEach(System.out::print);
System.out.println();
} }
Iziphumo:
123456789
Umzekelo wesibini usebenzisa umjelo opheleleyo kodwa songeze skip()
apha, ke kule meko, siza kutsiba izinto zokuqala ezi-5 zomjelo wethu.
Oku kuyakuba kukuprinta kuphela izinto ezi-6 ukuya ku-9. Sikwasebenzisa ibinzana elilula le-lambda ukuprinta into
import java.io.IOException; import java.util.stream.IntStream; public class JavaStreams {
public static void main(String[] args) throws IOException {
IntStream
.range(1, 10)
.skip(5)
.forEach(x -> System.out.println(x));
System.out.println();
} }
Iziphumo:
6 7 8 9
Umzekelo wesithathu, siphinda sisebenzise IntStream
ukwenza umjelo wethu wezinto nangona kunjalo, sibeka loo nto ngaphakathi println()
ingxelo njengeparameter yomgca wokuprinta.
Into esiza kuyiprinta sisishwankathelo esisuka ku-1 ukuya ku-5 ngamanye amagama, 1 2 3 & 4 izakuprinta kuphela inani lala manani:
import java.io.IOException; import java.util.stream.IntStream; public class JavaStreams {
public static void main(String[] args) throws IOException {
System.out.println(
IntStream
.range(1, 5)
.sum());
System.out.println();
} }
Iziphumo:
10
Umzekelo olandelayo usebenzisa Stream.of
function, eluncedo ngenene kuba unokusasaza amanani apheleleyo, amaxabiso encopho yokudada okanye imitya okanye izinto.
Kulo mzekelo, siza kwenza uhlobo oluchanekileyo loonobumba emva koko siza kufumana into yokuqala sisebenzisa findFirst()
umsebenzi. Emva koko, siprinta into yokuqala kuluhlu.
import java.io.IOException; import java.util.stream.Stream; public class JavaStreams {
public static void main(String[] args) throws IOException {
Stream.of('Ava', 'Aneri', 'Alberto')
.sorted()
.findFirst()
.ifPresent(System.out::println);
} }
Iziphumo
Alberto
Kumzekelo wethu olandelayo, siza kusasaza kuludwe. Emva koko siza kuhlela, ukucoca kunye nokuprinta.
Apha, siza kucoca izinto kuphela eziqala nge s
.
Sisebenzisa intetho ye-lambda engena X
eligama ngalinye emva koko likhangele ukuba leliphi eliqala ngonobumba s
kwaye iya kudlula abo.
Emva koko siza kuzihlela kwaye emva kwento nganye edlulayo olohlobo siza kuyiprinta.
import java.io.IOException; import java.util.Arrays; public class JavaStreams {
public static void main(String[] args) throws IOException {
String[] names = {'Al', 'Ankit', 'Kushal', 'Brent', 'Sarika', 'amanda', 'Hans', 'Shivika', 'Sarah'};
Arrays.stream(names)
.filter(x -> x.startsWith('S'))
.sorted()
.forEach(System.out::println);
} }
Iziphumo:
Sarah Sarika Shivika
Ngoku makhe sijonge indlela esinokuwuthatha ngayo umndilili wezikwere kuluhlu lwe-int.
Apha, sisebenzisa Arrays.stream()
Umsebenzi wokuhambisa amanani apheleleyo kwaye siza kusebenzisa map()
ukwenza imephu yento nganye kwinani elipheleleyo kwisikwere sayo.
import java.util.Arrays; public class JavaStreams {
public static void main(String[] args) {
Arrays.stream(new int[] {2, 4, 6, 8, 10})
.map(x -> x * x)
.average()
.ifPresent(System.out::println);
} }
Iziphumo:
44.0
Qaphela ukuba iprinta kabini endaweni yenani elipheleleyo.
Kulo mzekelo, siza kusasaza kuluhlu, ucofe ezo zinto emva koko uprinte.
Qaphela ukuba ngaphakathi map()
Umsebenzi, siza kuguqula onke amagama abe ngonobumba abancinci.
import java.util.Arrays; import java.util.List; public class JavaStreams {
public static void main(String[] args) {
List people = Arrays.asList('Al', 'Ankit', 'Brent', 'Sarika', 'amanda', 'Hans', 'Shivika', 'Sarah');
people
.stream()
.map(String::toLowerCase)
.filter(x -> x.startsWith('a'))
.forEach(System.out::println);
} }
Iziphumo:
al ankit amanda
Siyabona ukuba sinamagama amathathu aqala ngo a
kwaye zonke zikwikhasi elincinci.
Kumzekelo wethu olandelayo, siza kusasaza imiqolo kwifayile yokubhaliweyo. Siza kuhlela, sihlunge kwaye siprinte.
Masicinge ukuba sinefayile ebizwa bands.txt
nemixholo eboniswe ngezantsi:
Rolling Stones Lady Gaga Jackson Browne Maroon 5 Arijit Singh Elton John John Mayer CCR Eagles Pink Aerosmith Adele Taylor Swift
Siza kusebenzisa Files.lines()
ukwenza umjelo wethu oza kusinika umjelo womtya kumgca ngamnye wefayile.
Nje ukuba sibe nomsinga wethu, siza kuzihlela kwaye siza kucoca izinto ezingaphezulu kweempawu ezili-13 emva koko siprinte izinto ezishiyekileyo.
Okokugqibela, kufuneka siyivale ifayile ukuze senze bands.close
.
import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.stream.Stream; public class JavaStreams {
public static void main(String[] args) throws IOException {
Stream bands = Files.lines(Paths.get('bands.txt'));
bands
.sorted()
.filter(x -> x.length() > 13)
.forEach(System.out::println);
bands.close();
} }
Iziphumo:
Jackson Browne Rolling Stones
Sifumana iibhendi ezimbini ezinabalinganiswa abangaphezulu kwe-13.
Kulo mzekelo, siya kusebenzisa ifayile yokubhaliweyo efanayo njengasentla.
Sifuna ukucoca izinto ezinonobumba jit
, usebenzisa x.contains()
ongumsebenzi nje wentambo.
Sebenzisa .collect()
Sizongeza zonke ngoonobumba jit
kuluhlu.
Nje ukuba sikhuphe uluhlu, singasebenzisa forEach
oprinta izinto.
import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.List; import java.util.stream.Collectors; public class JavaStreams {
public static void main(String[] args) throws IOException {
List bands2 = Files.lines(Paths.get('bands.txt'))
.filter(x -> x.contains('jit'))
.collect(Collectors.toList());
bands2.forEach(x -> System.out.println(x));
} }
Iziphumo:
Arijit Singh
Kulo mzekelo, sisasaza imiqolo kwifayile ye-CSV kwaye siza kubala imiqolo elungileyo.
Masithi sinefayile ebizwa ngokuba data.txt
ngezi ziqulatho zilandelayo:
A,12,3.7 B,17,2.8 C,14,1.9 D,23,2.7 E F,18,3.4
Apha umqolo E awunayo idatha, ke sifuna ukuyikhuphela ngaphandle kumsinga wethu.
Kule khowudi ilandelayo, siza kufunda kumqolo ngamnye emva koko kufuneka sahlule kwiikoma zibe kuluhlu ukuze umqolo ngamnye ube luluhlu lwezinto.
Emva koko sisebenzisa icebo lokucoca ulwelo ukucoca imigca engenazinto zintathu.
import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.stream.Stream; public class JavaStreams {
public static void main(String[] args) throws IOException {
Stream rows1 = Files.lines(Paths.get('data.txt'));
int rowCount = (int)rows1
.map(x -> x.split(','))
.filter(x -> x.length == 3)
.count();
System.out.println(rowCount + ' rows.');
rows1.close();
} }
Iziphumo:
5 rows
Lo mzekelo ukubonisa indlela yokusebenzisa ukunciphisa. Siza kunciphisa ukuya kwisixa. Apha, sinomjelo ophindwe kabini sisebenzisa Stream.of()
umsebenzi. Sichaze ukuphindeka kathathu kwiingxoxo ezintathu ezahlukeneyo kwaye siza kusebenzisa ukunciphisa umsebenzi.
import java.util.stream.Stream; public class JavaStreams {
public static void main(String[] args) {
double total = Stream.of(7.3, 1.5, 4.8)
.reduce(0.0, (Double a, Double b) -> a + b);
System.out.println('Total = ' + total);
} }
Iziphumo:
13.600000000000001