Sobes.tech
Middle

Java-nın yeni versiyasında axınlar nə üçün istifadə olunur?

sobes.tech Süni İntellekt

AI-dan cavab

Java 8+ daxilində axınlar məlumat ardıcıllığının deklarativ işlənməsi üçün istifadə olunur. Onlar kolleksiyalar (siyahılar, toplular), massivlər və ya digər məlumat mənbələri üzərində funksional əməliyyatları boru xətti tərzində həyata keçirməyə imkan verir.

Axınların istifadəsinin əsas üstünlükləri:

  • Deklarativ üslub: "Nə" edilməli olduğunu, " necə" deyil, təsvir etməyə imkan verir. Bu, kodu daha oxunaqlı və anlaşılan edir.
  • Lazımsız hesablamalar: Əməliyyatlar yalnız lazım olduqda həyata keçirilir, bu da performansı artırmağa kömək edə bilər, xüsusən böyük məlumat həcmləri ilə işləyərkən.
  • Paralel işləmə: Axınlar asanlıqla paralelləşdirilə bilər (parallelStream() istifadə etməklə), bu da çox nüvəli prosessorlardan səmərəli istifadə etməyə imkan verir.
  • Şablon kodların azaldılması: Ənənəvi döngülər və iteratorlar daha ifadəli və qısa quruluşlarla əvəz olunur.
  • Dəyişməzlik: Axınlar orijinal məlumat mənbəyini dəyişmir.

Yaygın əməliyyat nümunələri:

  • Filtrləmə: filter() - şərtə əsasən elementlərin seçilməsi.
  • Transformasiya (xəritmə): map() - hər elementin dəyişdirilməsi.
  • Sıralama: sorted() - elementlərin sıralanması.
  • Unikal elementlər: distinct() - təkrarlananların silinməsi.
  • Qruplaşdırma: collect(Collectors.groupingBy(...)) - elementlərin xüsusiyyətə görə qruplaşdırılması.
  • Statistika/Aggregasiya: count(), sum(), average(), max(), min(), reduce() - toplama əməliyyatları.
  • Nəticələrin kolleksiyaya yığılması: collect(Collectors.toList()), collect(Collectors.toSet()) - nəticələrin kolleksiyaya yığılması.

İstifadə nümunəsi:

// Axın istifadə edərək sətir siyahısının filtrlənməsi və dəyişdirilməsi
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");

List<String> filteredNames = names.stream() // Siyahıdan axın yaradılır
                                   .filter(name -> name.startsWith("A")) // Filtrləmə: yalnız "A" ilə başlayan adlar
                                   .map(String::toUpperCase) // Dəyişdirmə: hər adı böyük hərflərə çevir
                                   .collect(Collectors.toList()); // Nəticəni yeni siyahıya yığırıq

System.out.println(filteredNames); // Çıxış: [ALICE]