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 turdagiTargumentini qabul qiladi.DoubleConsumer:doubleturidagi argumentni qabul qiladi. BuConsumerning primitiv spetsializatsiyasidir, bu avtomatik qadoqlashni oldini oladi va samaraliroq ishlaydi.IntConsumer:intturidagi argumentni qabul qiladi. Shuningdek, samaradorlik uchun primitiv spetsializatsiya.LongConsumer:longturidagi 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.