Mga Java Stream para sa Mga Nagsisimula: Isang Panimula sa Paggamit ng Mga Stream sa Java

Mga Java Stream para sa Mga Nagsisimula: Isang Panimula sa Paggamit ng Mga Stream sa Java

Pinapayagan ng mga stream ng Java 8 na ang mga developer ay kumuha ng eksaktong data mula sa isang malaking koleksyon, gamit ang isang hanay ng mga paunang natukoy na operasyon.





Bago ang paglabas ng Java 8, ang paggamit ng term na 'stream' sa Java ay awtomatikong maiugnay sa I / O. Gayunpaman, ipinakilala ng Java 8 ang isang stream na maaaring tinukoy bilang isang hanay ng mga hakbang sa computational na nakakadena sa kung ano ang karaniwang tinutukoy bilang isang 'stream pipeline.'





Ipakilala ka ng artikulong ito sa Java 8 stream at ipapakita kung paano sila magiging kapaki-pakinabang sa iyong mga proyekto.





Ano ang isang Stream?

Ang isang stream ay isang interface ng Java na tumatagal ng isang mapagkukunan, nagsasagawa ng isang hanay ng mga pagpapatakbo upang kumuha ng tukoy na data, pagkatapos ay nagbibigay ng data na iyon sa application para magamit. Mahalaga, pinapayagan kang kumuha ng dalubhasang data mula sa isang koleksyon ng pangkalahatang data.

Paano Gumagana ang Mga Stream

Ang isang pipeline ng stream ay laging nagsisimula sa isang mapagkukunan. Ang uri ng mapagkukunan ay nakasalalay sa uri ng data na iyong hinaharap, ngunit ang dalawa sa mga mas tanyag ay ang mga array at koleksyon.



Upang baguhin ang koleksyon sa isang paunang stream, kakailanganin mong idagdag ang stream () pagpapaandar sa pinagmulan. Ilalagay nito ang pinagmulan sa stream ng pipeline kung saan maraming magkakaibang mga interyenteng operasyon (tulad ng filter () at pag-uri-uriin () ) ay maaaring mapatakbo dito.

Matapos ang lahat ng kinakailangang pagpapatakbo ng intermedya ay isinasagawa, maaari mong ipakilala ang isang operasyon ng terminal (tulad ng para sa bawat () ), na kung saan ay gumawa ng dating nakuha data mula sa mapagkukunan.





Buhay na Walang Streams

Ang Java 8 ay pinakawalan noong 2014, ngunit bago iyon, kailangan pa rin ng mga developer ng Java na kumuha ng dalubhasang data mula sa isang koleksyon ng pangkalahatang data.

kung paano makahanap ng iyong mga tagasuskribi sa youtube

Sabihin nating mayroon kang isang listahan ng mga random na character na pinagsama sa mga random na numero upang makabuo ng mga natatanging halaga ng string, ngunit nais mo lamang ang mga halagang nagsisimula sa character na C at nais mong ayusin ang resulta sa pataas na pagkakasunud-sunod. Ganito mo makukuha ang data na iyon nang walang mga stream.





Kaugnay: Ano ang Kailangan Mong Malaman Tungkol sa Paggamit ng Mga String sa Java

Pagsala at Pag-uuri ng Mga Halaga Nang Walang Halimbawa ng Mga Stream


import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//declare and initialize the array list
List randomValues = Arrays.asList(
'E11', 'D12', 'A13', 'F14', 'C15', 'A16',
'B11', 'B12', 'C13', 'B14', 'B15', 'B16',
'F12', 'E13', 'C11', 'C14', 'A15', 'C16',
'F11', 'C12', 'D13', 'E14', 'D15', 'D16'
);
//declare the array list will store needed values
List requiredValues = new ArrayList();
//extracting the required values and storing them in reqquiredValues
randomValues.forEach(value -> {
if(value.startsWith('C')) {
requiredValues.add(value);
}
});
//sort the requiredValues in ascending order
requiredValues.sort((String value1, String value2) -> value1.compareTo(value2));
//print each value to the console
requiredValues.forEach((String value) -> System.out.println(value));
}
}

Kakailanganin mo ring ideklara at simulan ang listahan ng array kung gumagamit ka ba ng mga stream o ilang iba pang paraan ng pagkuha. Ang hindi mo kailangang gawin kung gumagamit ka ng mga stream ay nagdedeklara ng isang bagong variable upang hawakan ang mga kinakailangang halaga, o lumikha ng iba pang limang mga linya ng plus code ng halimbawa sa itaas.

Kaugnay: Paano Lumikha at Magsagawa ng Mga Operasyon sa Mga Array sa Java

Gumagawa ang code sa itaas ng sumusunod na output sa console:


C11
C12
C13
C14
C15
C16

Buhay Na May Mga Stream

Sa programa, ang kahusayan ay nagsasalita sa paggawa ng parehong resulta na may makabuluhang mas kaunting code. Ito mismo ang ginagawa ng isang pipeline ng stream para sa isang programmer. Kaya sa susunod na may magtanong: bakit mahalagang gumamit ng mga stream sa iyong proyekto? Maglagay lamang: sinusuportahan ng mga stream ang mahusay na programa.

Pagpapatuloy sa aming halimbawa sa itaas, ito ay kung paano binabago ng pagpapakilala ng mga stream ang buong programa.

Pagsala at Pag-uuri ng Mga Halaga Sa Isang Halimbawa ng Stream


import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//declare and initialize the array list
List randomValues = Arrays.asList(
'E11', 'D12', 'A13', 'F14', 'C15', 'A16',
'B11', 'B12', 'C13', 'B14', 'B15', 'B16',
'F12', 'E13', 'C11', 'C14', 'A15', 'C16',
'F11', 'C12', 'D13', 'E14', 'D15', 'D16'
);
//retrieves only values that start with C, sort them, and print them to the console.
randomValues.stream().filter(value->value.startsWith('C')).sorted().forEach(System.out::println);
}
}

Ipinapakita ng code sa itaas kung gaano kalakas ang stream interface. Tumatagal ito ng isang listahan ng mga random na halaga ng array at binago ito sa isang stream gamit ang stream () pagpapaandar Pagkatapos ang stream ay nabawasan sa isang listahan ng array na naglalaman ng mga kinakailangang halaga (na kung saan ay ang lahat ng mga halagang nagsisimula sa C ), gamit ang filter () pagpapaandar

Tulad ng nakikita mo sa halimbawa sa itaas, ang C ang mga halaga ay sapalarang nakaayos sa listahan ng array. Kung i-print mo ang stream sa puntong ito sa pipeline, ang halaga C15 ililimbag muna. Samakatuwid, ang pag-uri-uriin () Ang pagpapaandar ay ipinakilala sa stream ng pipeline upang muling ayusin ang bagong array sa pataas na pagkakasunud-sunod.

Ang pangwakas na pag-andar sa pipeline ng stream ay a para sa bawat () pagpapaandar Ito ay isang pagpapaandar ng terminal na ginagamit upang ihinto ang stream ng pipeline at gumagawa ng mga sumusunod na resulta sa console:


C11
C12
C13
C14
C15
C16

Mag-stream ng Mga Interoperasyong Operasyon

Mayroong isang malawak na listahan ng mga intermediate na pagpapatakbo na maaaring magamit sa isang stream ng pipeline.

Ang isang pipeline ng stream ay laging nagsisimula sa isang solong mapagkukunan at a stream () pagpapaandar, at palaging nagtatapos sa isang solong pagpapatakbo ng terminal (kahit na maraming magkakaibang mapipili.) Ngunit sa pagitan ng dalawang seksyon na ito ay isang listahan ng anim na mga intermedyang operasyon na maaari mong gamitin.

Sa aming halimbawa sa itaas, dalawa lamang sa mga intermedyang pagpapatakbo na ito ang ginagamit --- filter () at pag-uri-uriin () . Ang intermediate na operasyon na iyong pinili ay nakasalalay sa mga gawain na nais mong gampanan.

Kung ang alinman sa mga halagang nagsisimula sa C sa aming listahan ng array sa itaas ay nasa maliit na letra, at ginampanan namin ang parehong mga intermedyang operasyon sa kanila, makukuha namin ang sumusunod na resulta.

Pagsasagawa ng Pagpapatakbo ng Pag-filter at Pagbukud-bukurin sa Halimbawang Mga Halimbawang Maliit na Halaga


import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//declare and initialize the array list
List randomValues = Arrays.asList(
'E11', 'D12', 'A13', 'F14', 'C15', 'A16',
'B11', 'B12', 'c13', 'B14', 'B15', 'B16',
'F12', 'E13', 'C11', 'C14', 'A15', 'c16',
'F11', 'C12', 'D13', 'E14', 'D15', 'D16'
);
//retrieves only values that start with C, sort them, and print them to the console.
randomValues.stream().filter(value->value.startsWith('C')).sorted().forEach(System.out::println);
}
}

Ang code sa itaas ay bubuo ng mga sumusunod na halaga sa console:


C11
C12
C14
C15

Ang tanging problema sa output sa itaas ay hindi ito tumpak na kumakatawan sa lahat ng C mga halaga sa aming listahan ng array. Ang isang mahusay na paraan upang ayusin ang maliit na error na ito ay upang ipakilala ang isa pang intermediate na operasyon sa stream ng pipeline; ang operasyong ito ay kilala bilang mapa () pagpapaandar

Paggamit ng Halimbawa ng Pag-andar ng Mapa


import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//declare and initialize the array list
List randomValues = Arrays.asList(
'E11', 'D12', 'A13', 'F14', 'C15', 'A16',
'B11', 'B12', 'c13', 'B14', 'B15', 'B16',
'F12', 'E13', 'C11', 'C14', 'A15', 'c16',
'F11', 'C12', 'D13', 'E14', 'D15', 'D16'
);
//transforms all lower case characters to upper case,
//retrieves only values that start with C, sort them, and print them to the console.
randomValues.stream().map(String::toUpperCase).filter(value->value.startsWith('C')).sorted().forEach(System.out::println);
}
}

Ang mapa () binabago ng pagpapaandar ang isang bagay mula sa isang estado patungo sa isa pa; sa aming halimbawa sa itaas binabago nito ang lahat ng mga maliliit na character sa listahan ng array sa mga malalaking character.

Paglalagay ng mapa () pagpapaandar lamang bago ang filter () Kinukuha ng pagpapaandar ang lahat ng mga halagang nagsisimula sa C mula sa listahan ng array.

Ang code sa itaas ay gumagawa ng sumusunod na resulta sa console, matagumpay na kinakatawan ang lahat ng C mga halaga sa listahan ng array.


C11
C12
C13
C14
C15
C16

Ang iba pang tatlong mga intermediate na pagpapatakbo na maaari mong gamitin sa iyong mga aplikasyon ay may kasamang:

  • silip()
  • limitasyon ()
  • laktawan ()

Ang Java 8 Streams ay Pinapabilis ang Paglikha ng Mahusay na Code

Sa mga stream ng Java 8 maaari kang makakuha ng labis na tukoy, nauugnay na data mula sa isang malaking mapagkukunan na may isang linya ng code. Hangga't isasama mo ang paunang stream () pagpapaandar at isang operator ng terminal, maaari mong gamitin ang anumang kumbinasyon ng mga intermediate na operasyon na nagbibigay ng mga naaangkop na output para sa iyong layunin.

ano ang maaari mong i-print sa isang 3d printer

Kung nagtataka ka tungkol sa linya ng code na nakapaloob sa loob ng aming filter () pagpapaandar; kilala ito bilang isang 'expression ng lambda.' Ang mga expression ng lambda ay isa pang tampok na ipinakilala sa Java 8, at mayroon itong maraming mga nugget na maaari mong makita na kapaki-pakinabang.

Magbahagi Magbahagi Mag-tweet Email Isang Mabilis na Panimula sa Java 8 Lambdas

Kung ikaw ay isang programmer ng Java at interesado kang malaman ang higit pa tungkol sa Java 8 lambdas, sa artikulong ito susuriin namin nang mas malapit ang lambda syntax at paggamit.

Basahin Susunod
Mga Kaugnay na Paksa
  • Programming
  • Java
  • Mga Tutorial sa Coding
Tungkol sa May-akda Kadeisha Kean(21 Artikulo Nai-publish)

Si Kadeisha Kean ay isang Full-Stack Software Developer at Teknikal / Teknikal na Manunulat. Siya ay may natatanging kakayahan na gawing simple ang ilan sa mga pinaka kumplikadong teknolohikal na konsepto; paggawa ng materyal na madaling maunawaan ng anumang baguhan sa teknolohiya. Siya ay madamdamin tungkol sa pagsusulat, pagbuo ng mga kagiliw-giliw na software, at paglalakbay sa buong mundo (sa pamamagitan ng mga dokumentaryo).

Higit pa Mula kay Kadeisha Kean

Mag-subscribe sa aming newsletter

Sumali sa aming newsletter para sa mga tip sa tech, pagsusuri, libreng ebook, at eksklusibong deal!

Mag-click dito upang mag-subscribe