Szybkie wprowadzenie do Java 8 Lambdas

  • Lesley Fowler
  • 0
  • 1982
  • 545
Reklama

Jeśli jesteś programistą Java i chcesz dowiedzieć się więcej o lambdach Java 8, w tym artykule przyjrzymy się bliżej składni i użyciu lambda.

ZA wyrażenie lambda w Javie to zwięzły sposób wyrażenia metody klasy w wyrażeniu. Ma listę parametrów i treść. Ciało może być pojedynczym wyrażeniem lub blokiem. 10 podstawowych pojęć Java, których powinieneś nauczyć się na początku. 10 podstawowych pojęć Java, których powinieneś nauczyć się na początku, niezależnie od tego, czy piszesz GUI, rozwijasz oprogramowanie po stronie serwera, czy aplikację mobilną na Androida, nauka języka Java będzie Ci dobrze służyć. Oto kilka podstawowych pojęć Java, które pomogą Ci zacząć. . Jest powszechnie stosowany tam, gdzie wymagana jest implementacja interfejsu. Potrzeba ta zwykle pojawia się, gdy wymagany jest interfejs jako argument do wywołania metody.

Kilka prostych wyrażeń lambda

Spójrzmy na kilka prostych przykładów wyrażeń lambda.

Poniżej znajduje się wyrażenie lambda, które akceptuje dwie liczby x i y i oblicza sumę.

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

Upuść typy parametrów, aby uzyskać bardziej zwięzłą reprezentację:

(x, y) -> x + y; 

Zdefiniuj funkcję, która nie akceptuje parametrów:

() -> 404; 

Obowiązuje również następujący kod, który nie przyjmuje żadnych parametrów i niczego nie zwraca:

() ->  

Nie ma potrzeby nawiasów zawierających parametry dla jednego parametru:

x -> x + 1 

Możliwe są również bardziej złożone bloki kodu. Następująca lambda przyjmuje singiel linia parametr i wykonuje na nim pewne przetwarzanie. Zauważ, że typ parametru wywodzi się z otaczającego kontekstu:

linia -> Ciąg [] x = pattern.split (linia); zwraca nowy odtwarzacz (Integer.parseInt (x [0]), x [1], x [2], x [3], Integer.parseInt (x [4]));  

Czyste i zwięzłe kodowanie

Używanie wyrażeń lambda pomaga uczynić kod czystym i zwięzłym. Aby w tym pomóc, klasy Java 8 szeroko wykorzystują lambdy.

Pętla nad listą lub zestawem

Klasy kolekcji, takie jak Lista, Zestaw, Kolejka, i takie wdrożenie Iterowalny interfejs, który znacznie ułatwia zapętlanie elementów.

Zadeklaruj listę nazwisk.

Nazwy list = Arrays.asList („Joe”, „Jack”, „James”, „Albert”); 

Pętla nad listą bez lambda:

for (Nazwa ciągu: nazwy) System.out.println (nazwa);  

Przy użyciu lambda powyższą pętlę można zapisać jako:

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

W przypadku odniesień do metod Java 8 powyższe można napisać jeszcze bardziej zwięźle, jako:

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

Pętla nad mapą

ZA Mapa to mapowanie kluczy na wartości. Pętla nad mapą obejmuje pętlę nad każdym z mapowań (klucz, wartość). Porównaj, w jaki sposób możesz użyć lambdas do tego situtation.

Najpierw zdefiniuj mapę:

Mapa mapy = nowa HashMap (); map.put („Atlanta, Georgia”, 110); map.put („Austin, Texas”, 115); map.put („Baltimore, Maryland”, 105); map.put („Birmingham, Alabama”, 99); map.put („Boston, Massachusetts”, 98); 

Możesz przeglądać tę mapę w tradycyjny sposób:

for (Map.Entry e: map.entrySet ()) System.out.println (e.getKey () + "=>" + e.getValue ());  

Oto, jak możesz zrobić to samo w szybki i zwięzły sposób za pomocą lambdas:

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

Interfejsy funkcjonalne

Jaki jest typ zwracanego wyrażenia lambda? Innymi słowy, jaki jest typ X w poniższym stwierdzeniu?

X x = a -> a + 1; 

Zwracanym typem wyrażenia lambda jest funkcjonalny interfejs - interfejs z jedną metodą abstrakcyjną. Możesz przypisać wyrażenie lambda do interfejsu zgodną metodą abstrakcyjną. Kilka przykładów poniżej.

Tworzenie zadania wielowątkowego

Rozważ utworzenie zadania do wykonania w osobnym wątku. 4 metody pisania kodu wielowątkowego w Javie 4 metody pisania kodu wielowątkowego w Javie W tym artykule porównujemy kilka opcji pisania kodu wielowątkowego w Javie, więc możesz lepiej ocenić, której opcji użyć do następnego projektu Java. - musisz zdefiniować zadanie jako Runnable interfejs i zaimplementuj biegać() metoda. Tutaj Runnable to funkcjonalny interfejs.

klasa MyTask implementuje Runnable … public void run () // zaimplementuj swoje zadanie tutaj System.out.println („Teraz działa w osobnym wątku.”); … 

Następnie możesz utworzyć instancję pliku Moje zadanie klasy i użyj go, aby rozpocząć nowy wątek wykonania.

MyTask task = new MyTask (); Wątek wątku = nowy wątek (zadanie); thread.start (); 

Przy użyciu lambda proces tworzenia Runnable staje się znacznie łatwiejsze. Powyższą definicję zadania można przepisać jako:

Runnable task = () -> System.out.println („Teraz działa w osobnym wątku.”); 

Lub nawet:

Thread thread = new Thread (() -> System.out.println („Teraz działa w osobnym wątku.”)); thread.start (); 

Porównanie za pomocą komparatora

The Komparator to funkcjonalny interfejs do porównywania obiektów danego typu. Definiuje pojedynczą abstrakcyjną metodę o nazwie porównać() które można zdefiniować za pomocą wyrażenia lambda.

Oto wyrażenie lambda tworzące Komparator używane do porównywania ciągów bez rozróżniania wielkości liter.

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

Kiedyś wystąpienie Komparator funkcjonalny interfejs został utworzony, można go ponownie użyć w razie potrzeby.

Tutaj sortujemy listę ciągów w porządku rosnącym.

Nazwy list = Arrays.asList („Joe”, „Jack”, „James”, „Albert”); Kolekcje.sort (nazwy, cmp); names.forEach (System.out :: println); // drukuje Albert Jack James Joe 

Powyższa lista jest posortowana na miejscu. Możemy teraz wyszukiwać za pomocą binarySearch () metoda w następujący sposób:

System.out.println („search (Joe):” + Collections.binarySearch (imiona, „Joe”, cmp)); # print search (Joe): 3 

Obliczanie maksimum i minimum z listy jest również łatwe przy użyciu lambda.

Zdefiniuj niektóre dane:

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

Użyj wyrażenia lambda, aby zdefiniować komparator:

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

I wydrukuj maksimum i minimum:

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

Użyj w programowaniu GUI

Wyrażenia lambda są również niezwykle przydatne w programowaniu GUI do implementacji programów obsługi zdarzeń. Oto przykład użycia modułu obsługi kliknięcia przycisku.

Przycisk JButton = nowy przycisk JButton („Click Me”); button.addActionListener (e -> System.out.println („Kliknięty przycisk!”)); 

I to było szybkie spojrzenie na użycie lambdas w Javie 8.

Czy lambda ułatwiły Ci życie od Java 8? Proszę wyjaśnić w komentarzach poniżej.




Jeszcze bez komentarzy

O nowoczesnej technologii, prostej i niedrogiej.
Twój przewodnik w świecie nowoczesnych technologii. Dowiedz się, jak korzystać z technologii i gadżetów, które nas otaczają każdego dnia i dowiedz się, jak odkrywać ciekawe rzeczy w Internecie.