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));
Ngonversi Integerstream menyang Stringstream

Argumen fungsi sing diterusake menyang map()metode njupuk nomer xlan 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 Integerstream menyang Stringstream

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 Stringstream menyang Integerstream

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 );
Ngonversi Stringstream menyang URIstream

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 Stringminangka 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 URIkonstruktor 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.