Sobes.tech
Middle

Consumer<T>, DoubleConsumer, IntConsumer va LongConsumer funksional interfeyslari nima uchun kerak?

sobes.tech AI

AIdan javob

Funktsional interfeýslar Consumer<T>, DoubleConsumer, IntConsumer va LongConsumer kirish argumentini qabul qiladigan va natija qaytarmaydigan operatsiyalarni ifodalash uchun ishlatiladi. Ular java.util.function paketiga kiradi.

  • Consumer<T>: Har qanday turdagi T argumentini qabul qiladi.
  • DoubleConsumer: double turidagi argumentni qabul qiladi. Bu Consumer ning primitiv spetsializatsiyasidir, bu avtomatik qadoqlashni oldini oladi va samaraliroq ishlaydi.
  • IntConsumer: int turidagi argumentni qabul qiladi. Shuningdek, samaradorlik uchun primitiv spetsializatsiya.
  • LongConsumer: long turidagi argumentni qabul qiladi. Yana bir primitiv spetsializatsiya.

Ushbu interfeyslarning asosiy qoʻllanilishi Lambdas va metodga murojaat qilishda. Ular Java stream API da elementlar ustida yon taʼsirlarni bajarish uchun keng qoʻllaniladi, masalan, konsolga chiqarish yoki tashqi holatni o‘zgartirish.

Consumer<T> dan foydalanish misoli:

// Matnni chiqaradigan Consumer yaratish
Consumer<String> printConsumer = s -> System.out.println(s);

// Consumer ni qo‘llash
printConsumer.accept("Salom, dunyo!");

// Streamda foydalanish
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream().forEach(n -> System.out.println(n)); // Lambda bilan Consumer

IntConsumer dan foydalanish misoli:

// Raqamni chiqaradigan IntConsumer yaratish
IntConsumer printIntConsumer = i -> System.out.println(i);

// IntConsumer ni qo‘llash
printIntConsumer.accept(10);

// Primitiv intlar streamida foydalanish
IntStream.range(1, 5).forEach(printIntConsumer); // Ko‘proq samarali

Primitiv spetsializatsiyalar (DoubleConsumer, IntConsumer, LongConsumer) primitiv tiplarda ishlashda boxing/unboxing operatsiyalaridan qochish va ishlash samaradorligini oshirish uchun Consumer<T> ning umumiy analoglariga afzalroq bo‘lishi kerak.