I Java, anonyme funktioner , også kendt som lambda-udtryk. Det introducerede i Java 8 som en måde at give mere kortfattet og læsbar kode. De giver os mulighed for at definere en funktion i en enkelt kodelinje uden eksplicit at skulle definere en klasse eller grænseflade.
unix vs windows
Hvad er en anonym funktion?
En anonym funktion er en funktion, der ikke har noget navn og ikke er bundet til en identifikator. Det er typisk defineret inline og kan sendes som et argument til en anden funktion eller returneres som en værdi fra en funktion. I Java implementeres anonyme funktioner som lambda-udtryk, som er en kortfattet måde at definere en anonym funktion på.
Syntaks
Syntaksen for en anonym funktion i Java er som følger:
(parameters) -> { body }
Parametrene er input til funktionen, og kroppen er den kode, der udføres, når funktionen kaldes. Her er et eksempel på en anonym funktion, der tager to heltal som input og returnerer deres sum:
(int a, int b) -> { return a + b; }
Ovenstående anonyme funktion kan overføres som et argument til en anden funktion eller tildeles til en variabel:
Function add = (a, b) -> a + b;
I dette eksempel definerer vi en variabel kaldet add, der er en funktion, der tager to heltal som input og returnerer deres sum.
Fordele ved anonyme funktioner
Brugen af anonyme funktioner i Java har flere fordele, herunder:
Kortfattet syntaks: Anonyme funktioner giver en kortfattet måde at definere en funktion på uden at skulle definere en separat klasse eller grænseflade.
Læsbar kode: Fordi anonyme funktioner er defineret inline, kan koden være lettere at læse og forstå.
Fleksibilitet: Anonyme funktioner kan sendes som argumenter til andre funktioner eller returneres som værdier fra funktioner, hvilket giver mere fleksibilitet i, hvordan funktioner bruges.
Forbedret ydeevne: Brugen af anonyme funktioner kan forbedre ydeevnen ved at reducere mængden af hukommelse og processorkraft, der kræves for at definere og kalde funktioner.
her er et eksempel på Java-kode, der demonstrerer brugen af anonyme funktioner (lambda-udtryk) til at filtrere en liste over heltal:
Anonym FunctionExample.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; } }
Produktion:
Even numbers: 2 4
I denne kode definerer vi en liste over heltal og bruger derefter en anonym funktion (lambda-udtryk) til at definere et prædikat, der filtrerer listen til kun at inkludere lige tal. Vi bruger derefter filtermetoden til at anvende prædikatet på listen og returnere en ny liste med lige tal. Til sidst udskriver vi de lige tal ved hjælp af en for-løkke.
Her er et andet eksempel på Java-kode, der demonstrerer brugen af anonyme funktioner (lambda-udtryk) til at sortere en liste over strenge:
Anonym FunctionExample.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); } } }
Produktion:
Sorted list of fruits: Apple Banana Grape Orange Pineapple
I ovenstående kode har vi defineret en liste over frugter og bruger derefter en anonym funktion (lambda-udtryk) til at definere en komparator, der sorterer listen alfabetisk. Vi bruger derefter sorteringsmetoden til at anvende komparatoren på listen og sortere den. Til sidst udskriver vi den sorterede liste over frugter ved hjælp af en for-løkke.
Konklusion
Anonyme funktioner i Java giver en kortfattet og læsbar måde at definere funktioner på uden at skulle definere en separat klasse eller grænseflade. De kan bruges til at forbedre ydeevnen af kode og give mere fleksibilitet i, hvordan funktioner bruges. Med introduktionen af lambda-udtryk i Java 8 er anonyme funktioner blevet et vigtigt værktøj for udviklere til at skrive mere effektiv og vedligeholdelig kode.