Annuncio pubblicitario

Se sei un programmatore Java e sei interessato a saperne di più su Lambda 8 Java, in questo articolo daremo un'occhiata più da vicino alla sintassi e all'utilizzo di Lambda.

UN espressione lambda in Java è un modo conciso per esprimere un metodo di una classe in un'espressione. Ha un elenco di parametri e un corpo. Il corpo può essere un singolo espressione o un blocco 10 concetti fondamentali di Java che dovresti imparare all'inizioSia che tu stia scrivendo una GUI, sviluppando un software lato server o un'applicazione mobile usando Android, l'apprendimento di Java ti servirà bene. Ecco alcuni concetti chiave di Java per aiutarti a iniziare. Leggi di più . È comunemente usato dove è richiesta un'implementazione di un'interfaccia. Questa necessità di solito sorge quando è richiesta un'interfaccia come argomento per invocare un metodo.

Alcune semplici espressioni lambda

Vediamo alcuni semplici esempi di espressioni lambda.

La seguente è un'espressione lambda che accetta due numeri X e y e calcola la somma.

instagram viewer
(int x, int y) -> x + y; 

Rilascia i tipi di parametro per una rappresentazione più concisa:

(x, y) -> x + y; 

Definire una funzione che non accetta parametri:

() -> 404; 

È valido anche quanto segue, che non accetta parametri e non restituisce nulla:

() -> {}

Nessuna necessità di parentesi che racchiudano parametri per un singolo parametro:

x -> x + 1. 

Sono anche possibili blocchi di codice più complessi. Il seguente lambda accetta un singolo linea parametro e ne esegue l'elaborazione. Si noti che il tipo di parametro viene dedotto dal contesto circostante:

linea -> { String [] x = pattern.split (linea); ritorna nuovo Player (Integer.parseInt (x [0]), x [1], x [2], x [3], Integer.parseInt (x [4])); }

Codifica chiara e concisa

L'uso delle espressioni lambda aiuta a rendere il codice pulito e conciso. Per aiutare in questo, le classi Java 8 fanno ampio uso di lambda.

Passare in rassegna un elenco o un set

Classi di raccolta come Elenco, Impostato, Codae implementare tale iterable interfaccia che semplifica notevolmente il looping degli elementi.

Dichiara un elenco di nomi.

Elenco names = Arrays.asList ("Joe", "Jack", "James", "Albert"); 

Scorri l'elenco senza lambda:

per (Nome stringa: nomi) {System.out.println (nome); }

Usando lambda, il ciclo sopra può essere scritto come:

names.forEach (name -> System.out.println (name)); 

Con i riferimenti al metodo Java 8, quanto sopra può essere scritto in modo ancora più conciso come:

names.forEach (System.out:: println); 

Passare su una mappa

UN Carta geografica è una mappatura delle chiavi ai valori. Il ciclo su una mappa comporta il ciclo su ciascuna delle mappe (chiave, valore). Confronta come puoi usare lambda per questa situtazione.

Per prima cosa definisci una mappa:

Carta geografica map = new HashMap <> (); map.put ("Atlanta, Georgia", 110); map.put ("Austin, Texas", 115); map.put ("Baltimora, Maryland", 105); map.put ("Birmingham, Alabama", 99); map.put ("Boston, Massachusetts", 98); 

Puoi scorrere su questa mappa in modo tradizionale:

per (Mappa. Iscrizione e: map.entrySet ()) {System.out.println (e.getKey () + "=>" + e.getValue ()); }

Ecco come puoi fare la stessa cosa in modo rapido e conciso usando lambdas:

map.forEach ((k, v) -> System.out.println (k + "=>" + v)); 

Interfacce funzionali

Qual è il tipo restituito di un'espressione lambda? In altre parole, qual è il tipo di X nella seguente dichiarazione?

X x = a -> a + 1; 

Il tipo restituito di un'espressione lambda è a interfaccia funzionale - un'interfaccia con un unico metodo astratto. È possibile assegnare un'espressione lambda a un'interfaccia con un metodo astratto compatibile. Alcuni esempi di seguito.

Creazione di un'attività multi-thread

Prendi in considerazione la creazione di un'attività per esecuzione in un thread separato 4 metodi per scrivere codice multi-thread in JavaIn questo articolo, confrontiamo alcune opzioni per scrivere codice multi-thread in Java, in modo da poter giudicare meglio quale opzione usare per il tuo prossimo progetto Java. Leggi di più - è necessario definire l'attività come a Runnable interfacciare e implementare il correre() metodo. Qui Runnable è un'interfaccia funzionale.

class MyTask implementa Runnable {... public void run () {// implementa la tua attività qui System.out.println ("Esegui ora in un thread separato."); }... }

È quindi possibile creare un'istanza di Il mio compito classe e usarlo per iniziare un nuovo thread di esecuzione.

Attività MyTask = new MyTask (); Thread thread = new Thread (attività); Thread.start (); 

Usando un lambda, il processo di creazione di un Runnable diventa molto più facile. La definizione dell'attività sopra può essere riscritta come:

Runnable task = () -> System.out.println ("Esegui ora in un thread separato."); 

O anche:

Thread thread = new Thread (() -> System.out.println ("Esegui ora un thread separato.")); Thread.start (); 

Confronto mediante un comparatore

Il comparatore è un'interfaccia funzionale per il confronto di oggetti di un determinato tipo. Definisce un singolo metodo astratto chiamato confrontare() che può essere definito usando un'espressione lambda.

Ecco un'espressione lambda che crea un comparatore usato per confrontare le stringhe senza distinzione tra maiuscole e minuscole.

comparatore cmp = (x, y) -> x.compareToIgnoreCase (y); 

Una volta un'istanza di comparatore l'interfaccia funzionale è stata creata, può essere riutilizzata come richiesto.

Qui, ordiniamo un elenco di stringhe in ordine crescente.

Elenco names = Arrays.asList ("Joe", "Jack", "James", "Albert"); Collections.sort (nomi, cmp); names.forEach (System.out:: println); // stampa. Alberto. Jack. James. Joe. 

L'elenco sopra è ordinato in posizione. Ora possiamo cercarlo usando il binarySearch () metodo come segue:

System.out.println ("search (Joe):" + Collections.binarySearch (names, "Joe", cmp)); # stampe. ricerca (Joe): 3. 

Calcolare il massimo e il minimo da un elenco è anche facile usando lambdas.

Definisci alcuni dati:

Elenco temps = Arrays.asList (110, 115, 105, 99, 98, 54, 109, 84, 81, 66, 72, 135, 115, 75, 82, 90, 88); 

Utilizzare un'espressione lambda per definire il comparatore:

comparatore cmpTemp = (x, y) -> Integer.compare (x, y); 

E stampa il massimo e il minimo:

System.out.println ("Max / Min"); System.out.println (Collections.max (temps, cmpTemp) + "/" + Collections.min (temps, cmpTemp)); 

Utilizzare nella programmazione della GUI

Le espressioni lambda sono inoltre estremamente utili nella programmazione della GUI per implementare i gestori di eventi. Ecco un esempio dell'uso di un gestore di clic sui pulsanti.

Pulsante JButton = new JButton ("Click Me"); button.addActionListener (e -> System.out.println ("Clic sul pulsante!")); 

E questa è stata una rapida occhiata all'utilizzo di lambdas in Java 8.

Lambdas ti ha semplificato la vita da Java 8? Si prega di spiegare nei commenti qui sotto.