Java, anoniminės funkcijos , taip pat žinomas kaip lambda išraiškos. Jis buvo pristatytas „Java 8“ kaip būdas pateikti glaustesnį ir skaitomesnį kodą. Jie leidžia mums apibrėžti funkciją vienoje kodo eilutėje, nereikia aiškiai apibrėžti klasės ar sąsajos.
wumpus pasaulis
Kas yra anoniminė funkcija?
Anoniminė funkcija yra funkcija, kuri neturi pavadinimo ir nėra susieta su identifikatoriumi. Paprastai jis apibrėžiamas eilute ir gali būti perduodamas kaip argumentas kitai funkcijai arba grąžinamas kaip reikšmė iš funkcijos. Java programoje anoniminės funkcijos įgyvendinamos kaip lambda išraiškos, kurios yra trumpas anoniminės funkcijos apibrėžimo būdas.
Sintaksė
Anoniminės funkcijos „Java“ sintaksė yra tokia:
(parameters) -> { body }
Parametrai yra funkcijos įvestis, o kūnas yra kodas, kuris vykdomas, kai funkcija iškviečiama. Pateikiame anoniminės funkcijos, kuri įvesties būdu paima du sveikuosius skaičius ir grąžina jų sumą, pavyzdys:
(int a, int b) -> { return a + b; }
Aukščiau pateikta anoniminė funkcija gali būti perduota kaip argumentas kitai funkcijai arba priskirta kintamajam:
Function add = (a, b) -> a + b;
Šiame pavyzdyje apibrėžiame kintamąjį, vadinamą add, kuris yra funkcija, kuri kaip įvestį paima du sveikuosius skaičius ir grąžina jų sumą.
Anoniminių funkcijų pranašumai
Anoniminių funkcijų naudojimas Java turi keletą privalumų, įskaitant:
Glausta sintaksė: Anoniminės funkcijos suteikia glaustą būdą apibrėžti funkciją, neapibrėžiant atskiros klasės ar sąsajos.
Skaitomas kodas: Kadangi anoniminės funkcijos yra apibrėžtos eilute, kodą gali būti lengviau skaityti ir suprasti.
Lankstumas: Anoniminės funkcijos gali būti perduodamos kaip argumentai kitoms funkcijoms arba grąžinamos kaip reikšmės iš funkcijų, suteikiant daugiau lankstumo, kaip naudojamos funkcijos.
Patobulintas našumas: Anoniminių funkcijų naudojimas gali pagerinti našumą sumažinant atminties kiekį ir apdorojimo galią, reikalingą funkcijoms apibrėžti ir iškviesti.
Štai „Java“ kodo pavyzdys, rodantis anoniminių funkcijų (lambda išraiškų) naudojimą norint filtruoti sveikųjų skaičių sąrašą:
AnonymousFunctionExample.java
import java.util.ArrayList; import java.util.List; import java.util.function.Predicate; public class AnonymousFunctionExample { public static void main(String[] args) { List numbers = new ArrayList(); numbers.add(1); numbers.add(2); numbers.add(3); numbers.add(4); numbers.add(5); // Filter the list to only include even numbers Predicate isEven = (n) -> n % 2 == 0; List evenNumbers = filter(numbers, isEven); // Print the even numbers System.out.println('Even numbers:'); for (Integer number : evenNumbers) { System.out.println(number); } } // Filter a list using a predicate public static List filter(List list, Predicate predicate) { List result = new ArrayList(); for (T element : list) { if (predicate.test(element)) { result.add(element); } } return result; } }
Išvestis:
Even numbers: 2 4
Šiame kode apibrėžiame sveikųjų skaičių sąrašą, o tada naudojame anoniminę funkciją (lambda išraišką), kad apibrėžtume predikatą, kuris filtruoja sąrašą, kad būtų įtraukti tik lyginiai skaičiai. Tada mes naudojame filtravimo metodą, kad pritaikytume predikatą sąrašui ir grąžintume naują lyginių skaičių sąrašą. Galiausiai išspausdiname lyginius skaičius naudodami for kilpą.
Štai dar vienas Java kodo pavyzdys, rodantis anoniminių funkcijų (lambda išraiškų) naudojimą rūšiuojant eilučių sąrašą:
AnonymousFunctionExample.java
import java.util.ArrayList; import java.util.Comparator; import java.util.List; public class AnonymousFunctionExample { public static void main(String[] args) { List fruits = new ArrayList(); fruits.add('Apple'); fruits.add('Banana'); fruits.add('Grape'); fruits.add('Orange'); fruits.add('Pineapple'); // Sort the list of fruits alphabetically fruits.sort((f1, f2) -> f1.compareTo(f2)); // Print the sorted list of fruits System.out.println('Sorted list of fruits:'); for (String fruit : fruits) { System.out.println(fruit); } } }
Išvestis:
Sorted list of fruits: Apple Banana Grape Orange Pineapple
Aukščiau pateiktame kode apibrėžėme vaisių sąrašą ir tada panaudojome anoniminę funkciją (lambda išraišką), kad apibrėžtume palyginiklį, kuris sąrašą rūšiuoja abėcėlės tvarka. Tada naudojame rūšiavimo metodą, kad sąraše pritaikytume lyginamąjį elementą ir surūšiuotume jį. Galiausiai atspausdiname surūšiuotą vaisių sąrašą naudodami už kilpą.
Išvada
Anoniminės „Java“ funkcijos suteikia glaustą ir skaitomą funkcijų apibrėžimo būdą, neapibrėžiant atskiros klasės ar sąsajos. Jie gali būti naudojami siekiant pagerinti kodo veikimą ir suteikti daugiau lankstumo naudojant funkcijas. „Java 8“ įdiegus lambda išraiškas, anoniminės funkcijos tapo svarbiu įrankiu kūrėjams, leidžiančiais rašyti efektyvesnį ir prižiūrimesnį kodą.