Middle
Kam tiek izmantoti straumes jaunajā Java versijā?
sobes.tech AI
Atbilde no AI
Java 8+ straumes tiek izmantotas deklaratīvai datu secību apstrādei. Tās ļauj veikt funkcionālas operācijas kolekcijās (sarāmos, kopās), masīvos vai citos datu avotos straumes stilā.
Galvenās priekšrocības:
- Deklaratīvs stils: Tās ļauj aprakstīt "ko" nepieciešams darīt ar datiem, nevis "kā". Tas padara kodu lasāmāku un saprotamāku.
- Aizkavētas aprēķināšanas: Operācijas tiek veiktas tikai tad, kad tas ir nepieciešams, kas var uzlabot veiktspēju, īpaši strādājot ar lieliem datu apjomiem.
- Paralēla apstrāde: Straumes viegli var paralēlizēt (
parallelStream()), kas ļauj efektīvi izmantot daudzkodolu procesorus. - Šablonu koda samazināšana: Tie aizstāj tradicionālās cilpas un iterators ar izteiksmīgākām un kodu saīsinātākām konstrukcijām.
- Neizmaināmība: Straumes nemaina sākotnējo datu avotu.
Populāras operācijas piemēri:
- Filtrēšana:
filter()- elementu atlase pēc nosacījuma. - Pārveidošana (mapi):
map()- katra elementa pārveidošana. - Sakārtošana:
sorted()- elementu sakārtošana. - Unikāli elementi:
distinct()- dublikātu noņemšana. - Grupēšana:
collect(Collectors.groupingBy(...))- elementu grupēšana pēc pazīmes. - Statistika/Agregācija:
count(),sum(),average(),max(),min(),reduce()- agregējošas operācijas. - Rezultātu savākšana kolekcijā:
collect(Collectors.toList()),collect(Collectors.toSet())- rezultātu savākšana.
Piemērs lietošanai:
// Saraksta virkņu filtra un pārveidošanas piemērs ar straumi
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");
List<String> filteredNames = names.stream() // Straumes izveide no saraksta
.filter(name -> name.startsWith("A")) // Filtrēšana: atlase tikai ar "A" sākotnējo vārdu
.map(String::toUpperCase) // Pārveidošana: katrs vārds lielajiem burtiem
.collect(Collectors.toList()); // Rezultāta savākšana jaunā sarakstā
System.out.println(filteredNames); // Izvade: [ALICE]