1. Konversi data
Kelas kasebut Stream<T>
uga duwe metode sing ngidini sampeyan ngowahi data saka siji jinis menyang jinis liyane. Cara iki yaiku map()
.
Iku uga ngasilake stream, nanging karo unsur saka jinis beda. Cara kasebut map()
njupuk minangka argumen metode fungsi sing ngowahi siji jinis data menyang liyane.
Tuladha:
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
Stream<String> stream2 = stream.map((x) -> String.valueOf(x));
Argumen fungsi sing diterusake menyang map()
metode njupuk nomer x
lan ngasilake perwakilan string. Miturut cara, sampeyan bisa nulis kode iki kanthi luwih kompak:
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
Stream<String> stream2 = stream.map(String::valueOf);
Ngonversi string menyang nomer
Kajaba iku, sampeyan bisa nulis kode kanggo ngowahi senar menyang nomer - iki uga ora rumit:
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
Stream<String> stream2 = stream.map(String::valueOf);
Stream<Integer> stream3 = stream2.map(Integer::parseInt);
Ngonversi string menyang aURI
operasi konversi data bisa sumber- lan wektu intensif. Contone, kita pengin ngowahi koleksi strings menyang obyek URI. Iki gampang banget ditindakake, amarga konstruktor URI njupuk senar minangka argumen.
ArrayList<String> list = new ArrayList<String>();
list.add("https://google.com");
list.add("https://linkedin.com");
list.add("https://yandex.com");
Stream<URI> stream = list.stream().map( URI::new );
Kita nggawe koleksi lan diisi karo 3 alamat web. Banjur kita entuk Stream<String>
obyek saka koleksi kasebut, lan saka aliran kasebut entuk obyek Stream<URI>
. Kita ngliwati metode peta minangka referensi kanggo metode sing bakal digunakake kanggo ngowahi saben String dadi URI.
Cara iki (konstruktor) kudu njupuk String
minangka argumen. Kabeh katon sampurna ...
2. Pangecualian
Kita bisa uga nyana yen kode ing ndhuwur kudu bisa, nanging ora bakal - program ora bakal kompilasi. Lan dudu amarga kita salah ing endi wae, nanging amarga pangripta Jawa wis kacau.
Biyen, dheweke duwe ide sing apik kanggo nambah pengecualian sing dicenthang ( URISyntaxException
) kanggo URI
konstruktor kelas! Lan pangecualian kasebut kudu dibungkus nganggo a try-catch
.
Dadi baris pungkasan kode kita bakal katon kaya iki:
Stream<URI> stream = list.stream().map(str ->
{
try
{
return new URI(str);
}
catch (URISyntaxException e)
{
e.printStackTrace();
return null;
}
});
Apa sing bisa kita ucapake? Sampeyan kudu mikir kaping pindho sadurunge nggunakake pangecualian sing dicenthang . Lan mikir kaping telu sadurunge digunakake ing konstruktor.
GO TO FULL VERSION