Sobes.tech
Middle

Consumer<T>, DoubleConsumer, IntConsumer və LongConsumer funksional interfeysləri nə üçün istifadə olunur?

sobes.tech Süni İntellekt

AI-dan cavab

Fəaliyyət interfeysləri Consumer<T>, DoubleConsumer, IntConsumerLongConsumer giriş arqumenti qəbul edən və nəticə qaytarmayan əməliyyatları təmsil etmək üçün istifadə olunur. Onlar java.util.function paketinə daxildir.

  • Consumer<T>: Hər hansı T tipində arqument qəbul edir.
  • DoubleConsumer: double tipində arqument qəbul edir. Bu, Consumer-ın primitiv ixtisaslaşmasıdır və avtomatik qutulamağı (autoboxing) qarşısını alır və daha səmərəli işləyir.
  • IntConsumer: int tipində arqument qəbul edir. Eyni zamanda, səmərəlilik üçün primitiv ixtisaslaşmadır.
  • LongConsumer: long tipində arqument qəbul edir. Yana bir primitiv ixtisaslaşmadır.

Bu interfeyslərin əsas istifadəsi Lambdas və metod referanslarında olur. Onlar Java stream API-də elementlər üzərində yan təsirlər həyata keçirmək üçün tez-tez istifadə olunur, məsələn, konsola çap etmək və ya xarici vəziyyəti dəyişdirmək üçün.

Consumer<T>-in istifadə nümunəsi:

// Sətiri çap edən Consumer yaradılması
Consumer<String> printConsumer = s -> System.out.println(s);

// Consumer-in tətbiqi
printConsumer.accept("Salam, dünya!");

// Stream-də istifadə
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream().forEach(n -> System.out.println(n)); // Lambda ilə Consumer istifadəsi

IntConsumer-in istifadə nümunəsi:

// Rəqəmi çap edən IntConsumer yaradılması
IntConsumer printIntConsumer = i -> System.out.println(i);

// IntConsumer-in istifadəsi
printIntConsumer.accept(10);

// Primitiv int axınında istifadə
IntStream.range(1, 5).forEach(printIntConsumer); // Daha səmərəli

Primitiv ixtisaslaşmalar (DoubleConsumer, IntConsumer, LongConsumer) primitiv tiplərlə işləyərkən boxing/unboxing əməliyyatlarından qaçmaq və performansı artırmaq üçün Consumer<T>-in ümumi analoqlarından üstün tutulmalıdır.