1. Inovasi ing Jawa 8: Pemrograman fungsional
Kanthi rilis Java 8, basa kasebut entuk dhukungan sing kuat kanggo pemrograman fungsional . Sampeyan bisa uga ujar manawa entuk dhukungan sing ditunggu-tunggu kanggo program fungsional. Coding dadi luwih cepet, sanajan kode luwih angel diwaca 🙂
Sadurunge sinau pemrograman fungsional ing Jawa, disaranake sampeyan ngerti telung perkara kanthi apik:
- OOP, warisan lan antarmuka ( Tingkat 1-2 ing quest Java Core ).
- Implementasi metode standar ing antarmuka .
- Kelas njero lan anonim .
Kabar apik yaiku sampeyan ora kudu ngerti kabeh iki kanggo nggunakake akeh fitur pemrograman fungsional ing Jawa. Kabar ala iku bakal angel kanggo ngerti persis carane kabeh wis diatur lan carane kabeh bisa tanpa ngerti bab kelas batin anonim.
Ing wulangan mbesuk, kita bakal fokus ing carane gampang lan prasaja nggunakake fitur program fungsi Jawa, tanpa pangerten jero babagan cara kerjane.
Perlu sawetara wulan kanggo ngerti kabeh nuansa pemrograman fungsional ing Jawa. Sampeyan bisa sinau maca kode kasebut sajrone sawetara jam. Dadi kita saranake miwiti cilik. Sanajan nganggo aliran I/O.
2. I / O lepen: stream pipelines
Apa sampeyan kelingan yen biyen sampeyan sinau babagan aliran I/O: InputStream
, OutputStream
, Reader
, Writer
lsp?
Ana kelas stream sing maca data saka sumber data , kayata FileInputSteam
, lan ana aliran data penengah sing maca data saka aliran liyane, kayata InputStreamReader
lan BufferedReader
.
Aliran kasebut bisa diatur dadi pipa pangolahan data. Contone, kaya iki:
FileInputStream input = new FileInputStream("c:\\readme.txt");
InputStreamReader reader = new InputStreamReader(input);
BufferedReader buff = new BufferedReader(reader);
String text = buff.readLine();
Penting kanggo dicathet yen ing sawetara baris kode pisanan, kita mung nggawe rantai Stream
obyek. Data kasebut durung ngliwati saluran pipa.
Nanging sanalika kita nelpon buff.readLine()
cara, ing ngisor iki bakal kelakon:
- Obyek
BufferedReader
nelponread()
metode ingInputStreamReader
obyek - Obyek
InputStreamReader
nelponread()
metode ingFileInputStream
obyek - Obyek
FileInputStream
wiwit maca data saka file
Ing tembung liyane, ora ana gerakan data ing sadawane saluran pipa nganti kita miwiti nelpon cara kaya read()
utawa readLine()
. Konstruksi pipa stream mung ora nyopir data. Aliran kasebut ora nyimpen data. Dheweke mung maca saka wong liya.
Koleksi lan aliran
Miwiti karo Java 8, dadi bisa entuk stream kanggo maca data saka koleksi (lan ora mung saka wong-wong mau). Nanging iki dudu perkara sing paling menarik. Sejatine bisa gampang lan mung nggawe rantai kompleks aliran data. Lan kanthi mangkono, kode sing sadurunge njupuk 5-10 baris saiki bisa ditulis ing 1-2 baris.
Conto nemokake string paling dawa ing dhaptar string:
Nemokake string paling dawa |
---|
|
|
3. Stream
antarmuka
Dhukungan lengkap Java 8 kanggo stream dileksanakake nggunakake antarmuka Stream<T>
, ing endi T
parameter jinis sing nuduhake jinis data sing diterusake ing aliran kasebut. Ing tembung liyane, stream temenan independen saka jinis data liwat.
Kanggo njupuk obyek stream saka koleksi , mung nelpon stream()
cara. Kode katon kira-kira kaya iki:
Stream<Type> name = collection.stream();
Ing kasus iki, koleksi bakal dianggep minangka sumber data stream, lan obyek Stream<Type>
bakal dadi piranti kanggo njupuk data saka kumpulan ing wangun stream data.
ArrayList<String> list = new ArrayList<String>();
Collections.addAll(list, "Hello", "how's", "life?");
Stream<String> stream = list.stream();
Miturut cara, sampeyan bisa entuk stream ora mung saka koleksi, nanging uga saka array . Kanggo nindakake iki, sampeyan kudu nggunakake cara. Tuladhane:Arrays.stream()
Stream<Type> name = Arrays.stream(array);
Ing kasus iki, array bakal dianggep minangka sumber data kanggo stream sing diarani name
.
Integer[] array = {1, 2, 3};
Stream<Integer> stream = Arrays.stream(array);
Ora ana data sing dipindhah nalika Stream<Type>
obyek digawe. Kita mung entuk obyek stream kanggo miwiti mbangun pipa stream.
GO TO FULL VERSION