Sobes.tech
Junior

Javaда Stream APIнин негизги идеясы эмне?

sobes.tech AI

AIден жооп

Stream API nin esasy ideýasy maglumatlar ýygnagyny işlemek üçin deklaratiw usul üpjün etmekdir. Imperatiw gaýtalamaly çemeleşmäniň ýerine, akymlar (streams) maglumatlar bilen näme edilmelidigini (filtrläp, üýtgetip, jemläp) beýik görkezmäge mümkinçilik berýär, näme edilmelidigini API-de goýýar.

Esasy düşünjeler:

  • Üýtgemezlik: Akymlar esasy maglumat çeşmesini üýtgetmeýär. Akym operasiýalary täze akymlary ýa-da netijeleri döredýär.
  • Gözegçiliksiz bahalandyryş: Köp akym operasiýalary, meselem, filter() we map(), aralyk operasiýalardyr. Olary, collect() ýa-da forEach() ýaly terminal operasiýa çagyrmaça çenli ýerine ýetirilmeýär. Bu, ýerine ýetirmäni optimizirlemäge mümkinçilik berýär.
  • Pipeline: Akym operasiýalary pipeline-ä birleşdirilip bilner. Her element, yzygiderli ýa-da paralel geçiriler.
  • Paralel işlemek: Akymlar maglumatlaryň aňsatlyk bilen paralel işlenmegine niýetlenipdir, köplenç minimal kod üýtgeşmeleri bilen (parallelStream()).

Ulylyk:

  • Kolleksiýalar bilen kyn operasionalar üçin has okatylýan we beýik kod.
  • Parallellik aňsatlygy.
  • Döwrebap kodlary, iterasiýalar bilen baglanyşykly boilerplate-leri aýyrýar.
// Mysal: String sanawyny filtrlemek we üýtgetmek
List<String> atlar = Arrays.asList("Alice", "Bob", "Charlie", "David");

List<Integer> uzynlyklar = atlar.stream()
                            .filter(at -> at.startsWith("A")) // Aralyk operasiýa
                            .map(String::length)             // Aralyk operasiýa
                            .collect(Collectors.toList());   // Terminal operasiýa

// uzynlyklar [5] bolar