logo

Стреам Ин Јава

Стрим је уведен у Јава 8 Стреам АПИ се користи за обраду колекција објеката. Стрим у Јави је низ објеката који подржавају различите методе које се могу конструисати да би се произвео жељени резултат. 

Коришћење Стреам-а у Јави

Употреба Стреам-а у Јави је поменута у наставку:



  • Стреам АПИ је начин за изражавање и обраду колекција објеката.
  • Омогућите нам да извршимо операције као што је филтрирање, смањење мапирања и сортирање.

Како направити Јава стреам

Креирање Јава Стреам-а је један од најосновнијих корака пре разматрања функционалности Јава Стреам-а. Испод је дата синтакса за декларисање Јава стрима.

јава стринг класа

Синтакса

Стреамстреам;

Овде је Т или објекат класе или тип података у зависности од декларације.



Карактеристике Јава стрима

Карактеристике Јава стримова су наведене у наставку:

  • Стреам није структура података; само узима улаз из низова колекција или И/О канала.
  • Токови не мењају оригиналне податке; они само производе резултате користећи своје методе.
  • Међуоперације (као што је мапа филтера итд.) су лење и враћају други ток тако да можете да их повежете заједно.
  • Терминална операција (као што је цоллецт форЕацх цоунт) завршава ток и даје коначни резултат.

Различите операције на токовима

Постоје две врсте операција у стримовима:

  1. Интермедиате Оператионс
  2. Терминалне операције

Интермедиате Оператионс

Операције са Јава стримом' title=



Интермедијарне операције су типови операција у којима је више метода везано у низу.

Карактеристике међуоперација

  • Методе су повезане заједно.
  • Међуоперације трансформишу ток у други ток.
  • Омогућава концепт филтрирања где један метод филтрира податке и прослеђује их другом методу након обраде.

Важне посредничке операције

Постоји неколико средњих операција наведених у наставку:

1. мап() : Метод мапе се користи за враћање тока који се састоји од резултата примене дате функције на елементе овог тока.

Синтакса:

Стреаммапа (функцијамапер)

2. филтер() : Метод филтера се користи за одабир елемената према предикату који се прослеђује као аргумент.

Синтакса:

Стреамфилтер (предикатпредикат)

3. сортед() : сортирани метод се користи за сортирање тока.

Синтакса:

Стреамсортирано()
Стреамсортирано (компараторкомпаратор)

4. флатМап(): Операција флатМап у Јава Стреамс-у се користи за изравнавање низа колекција у један ток елемената.

Синтакса:

јава веза мискл

СтреамфлатМап(Функција> мапер)

5. различит() : Уклања дуплиране елементе. Враћа ток који се састоји од различитих елемената (према Објецт.екуалс(Објецт)).

Синтакса:

Стреамразличит()

6. завирите() : Изводи радњу на сваком елементу без модификације тока. Враћа ток који се састоји од елемената овог тока који додатно изводе дату акцију на сваком елементу пошто се елементи троше из резултујућег тока.

Синтакса:

Стреамзавирите (Потрошачакција)

Јава програм који показује употребу свих међуоперација:

Java
import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.stream.Collectors; public class StreamIntermediateOperationsExample {  public static void main(String[] args) {  // List of lists of names  List<List<String>> listOfLists = Arrays.asList(  Arrays.asList('Reflection' 'Collection' 'Stream')  Arrays.asList('Structure' 'State' 'Flow')  Arrays.asList('Sorting' 'Mapping' 'Reduction' 'Stream')  );  // Create a set to hold intermediate results  Set<String> intermediateResults = new HashSet<>();  // Stream pipeline demonstrating various intermediate operations  List<String> result = listOfLists.stream()  .flatMap(List::stream)   .filter(s -> s.startsWith('S'))   .map(String::toUpperCase)   .distinct()   .sorted()   .peek(s -> intermediateResults.add(s))  .collect(Collectors.toList());   // Print the intermediate results  System.out.println('Intermediate Results:');  intermediateResults.forEach(System.out::println);  // Print the final result  System.out.println('Final Result:');  result.forEach(System.out::println);  } } 

Излаз
Intermediate Results: STRUCTURE STREAM STATE SORTING Final Result: SORTING STATE STREAM STRUCTURE 

Објашњење:

  • ЛистОфЛистс се креира као листа која садржи друге листе стрингова.
  • флатМап(Листа::стреам): Поравнава угнежђене листе у један ток низова.
  • филтер(с -> с.стартсВитх('С')) : Филтрира стрингове тако да обухвата само оне који почињу са 'С'.
  • мап(Стринг::тоУпперЦасе) : Конвертује сваки стринг у току у велика слова.
  • различит() : Уклања све дупле низове.
  • сортирано() : Сортира резултујуће низове по абецедном реду.
  • завирите(...): Додаје сваки обрађени елемент скупу интермедиатеРесултс за међуинспекцију.
  • цоллецт(Цоллецторс.тоЛист()): Сакупља завршне обрађене стрингове у листу која се зове резултат.

Програм штампа међурезултате ускладиштене у скупу интермедиатеРесултс. Коначно, штампа листу резултата која садржи потпуно обрађене стрингове након свих стрим операција.

Терминалне операције

Терминалне операције су тип операција које враћају резултат. Ове операције се не обрађују даље, само враћају коначну вредност резултата.

Важне операције терминала

1. цоллецт() : Метод прикупљања се користи за враћање резултата међуоперација извршених на току.

Синтакса:

Р цоллецт(Колекционарколекционар)

2. форЕацх() : ФорЕацх метода се користи за понављање кроз сваки елемент тока.

Синтакса:

воид форЕацх (Потрошачакција)

3. смањити(): Метод смањења се користи да би се елементи тока свели на једну вредност. Метод смањења узима БинариОператор као параметар.

Синтакса:

Т смањи(Т идентитет БинарниОператоракумулатор)
Опционосмањити (БинариОператоракумулатор)

4. цоунт() : Враћа број елемената у току.

Синтакса:

дуго бројање ()

5. финдФирст() : Враћа први елемент тока ако је присутан.

Синтакса:

ОпционофиндФирст()

случајни број у Јави

6. аллМатцх() : Проверава да ли се сви елементи тока подударају са датим предикатом.

Синтакса:

боолеан аллМатцх(предикатпредикат)

7. Било које подударање () : Проверава да ли било који елемент тока одговара датом предикату.

Синтакса:

Боолеан Аниматцх (предикатпредикат)

Овде се променљивој анс додељује 0 као почетна вредност и њој се додаје и.

Напомена: Интермедиате Оператионс се покрећу на основу концепта Лази Евалуатион који осигурава да сваки метод враћа фиксну вредност (терминална операција) пре преласка на следећи метод.

Јава програм који користи све терминалске операције:

Java
import java.util.*; import java.util.stream.Collectors; public class StreamTerminalOperationsExample {  public static void main(String[] args) {  // Sample data  List<String> names = Arrays.asList(  'Reflection' 'Collection' 'Stream'  'Structure' 'Sorting' 'State'  );  // forEach: Print each name  System.out.println('forEach:');  names.stream().forEach(System.out::println);  // collect: Collect names starting with 'S' into a list  List<String> sNames = names.stream()  .filter(name -> name.startsWith('S'))  .collect(Collectors.toList());  System.out.println('ncollect (names starting with 'S'):');  sNames.forEach(System.out::println);  // reduce: Concatenate all names into a single string  String concatenatedNames = names.stream().reduce(  ''  (partialString element) -> partialString + ' ' + element  );  System.out.println('nreduce (concatenated names):');  System.out.println(concatenatedNames.trim());  // count: Count the number of names  long count = names.stream().count();  System.out.println('ncount:');  System.out.println(count);  // findFirst: Find the first name  Optional<String> firstName = names.stream().findFirst();  System.out.println('nfindFirst:');  firstName.ifPresent(System.out::println);  // allMatch: Check if all names start with 'S'  boolean allStartWithS = names.stream().allMatch(  name -> name.startsWith('S')  );  System.out.println('nallMatch (all start with 'S'):');  System.out.println(allStartWithS);  // anyMatch: Check if any name starts with 'S'  boolean anyStartWithS = names.stream().anyMatch(  name -> name.startsWith('S')  );  System.out.println('nanyMatch (any start with 'S'):');  System.out.println(anyStartWithS);  } } 

Излаз:

СтреамсОутпут' loading='lazy' title=Излаз

Објашњење:

  • Листа имена је креирана са узорцима низова.
  • за сваког: Штампа свако име на листи.
  • сакупљати : Филтрира имена која почињу са 'С' и прикупља их у нову листу.
  • смањити : Спаја сва имена у један стринг.
  • цоунт : Броји укупан број имена.
  • финдФирст : Проналази и штампа прво име на листи.
  • аллМатцх : Проверава да ли сва имена почињу са 'С'.
  • несрећни : Проверава да ли неко име почиње са 'С'.

Програм штампа сва имена имена која почињу са 'С' спојена имена, број имена, име да ли сва имена почињу са 'С' и да ли неко име почиње са 'С'.

Предност Јава Стреам-а

Постоје неке предности због којих користимо Стреам у Јави као што је наведено у наставку:

  • Но Стораге
  • Пипелине оф Фунцтионс
  • лењост
  • Може бити бесконачан
  • Може се паралелно
  • Може се креирати од низова колекција Филес Линес Методе у Стреам ИнтСтреам итд.

Реални случајеви употребе Јава стримова

Стреамови се широко користе у савременим Јава апликацијама за:

  • Обрада података
  • За обраду ЈСОН/КСМЛ одговора
  • За операције базе података
  • Истовремена обрада