Sobes.tech
Junior

Mida võimaldavad teha lambda avaldised Java's?

sobes.tech AI

Vastus AI-lt

Lambda väljendid (Lambda Expressions) Java-s, mis ilmusid Java 8-s, võimaldavad:

  • Rakendada liideseid ühe abstraktse meetodiga (funktsionaalsed liidesed): see on peamine eesmärk. Lambda väljendid pakuvad lühikest süntaksit funktsionaalsete liideste näidete loomiseks:
// Enne Java 8
Runnable runnable = new Runnable() {
    @Override
    public void run() {
        System.out.println("Hello pre-Java 8!");
    }
};

// Java 8-ga
Runnable lambdaRunnable = () -> System.out.println("Hello Java 8!");
  • Käivitada käitumist (funktsioone) meetodite argumentidena: see laiendab Java funktsionaalset programmeerimist. Meetodid võivad võtta lambda väljendeid parameetritena:
// Näide Stream API kasutamisest lambda-ga
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
names.stream()
     .filter(name -> name.startsWith("A")) // lambda filter-ina
     .forEach(System.out::println);       // lambda (meetodi viide) forEach-ina
  • Kasutada Stream API-d: Lambda väljendid on uue Stream API aluseks, võimaldades tõhusalt töödelda andmekogusid:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sumOfEven = numbers.stream()
                      .filter(n -> n % 2 == 0)
                      .mapToInt(Integer::intValue)
                      .sum();
  • Simpeldada anonüümsete sisemiste klasside rakendamist funktsionaalsetele liidesele: Lambda asendab selle kontekstis palju sõnu nõudvad anonüümsed klassid:

  • Parandada koodi loetavust: lihtsate operatsioonide jaoks muudab lambda koodi lühemaks ja arusaadavamaks:

  • Lubada hilinenud koodi täitmist: Lambda kirjeldab tegevust, mis täidetakse hiljem, kui see kutsutakse välja:

Lambda-l on juurdepääs ka välise vahemiku muutujatele (kui need on efektiivselt finalid).

Kokkuvõttes muudab lambda väljendid Java rohkem väljenduslikuks ja sobivaks funktsionaalseks programmeerimisstiiliks.