İlan
Bir Java programcısıysanız ve Java 8 lambdas hakkında daha fazla bilgi edinmek istiyorsanız, bu makalede lambda sözdizimi ve kullanımına daha yakından bakacağız.
bir lambda ifadesi Java'da bir ifadedeki bir sınıfın yöntemini ifade etmenin kısa bir yoludur. Bir parametre listesi ve bir gövdesi vardır. Vücut tek olabilir ifade veya bir blok Başlarken Öğrenmeniz Gereken 10 Temel Java Kavramıİster GUI yazıyor olun, ister sunucu tarafı yazılım geliştirin, isterse Android kullanan bir mobil uygulama geliştirin, Java öğrenmek size iyi hizmet edecektir. İşte başlamanıza yardımcı olacak bazı temel Java kavramları. Daha fazla oku . Bir arayüzün uygulanması gerektiğinde yaygın olarak kullanılır. Bu ihtiyaç genellikle bir yöntemi çağırmak için argüman olarak bir arayüz gerektiğinde ortaya çıkar.
Bazı Basit Lambda İfadeleri
Lambda ifadelerinin bazı basit örneklerine bakalım.
Aşağıdaki, iki sayıyı kabul eden bir lambda ifadesidir. x ve y ve toplamı hesaplar.
(int x, int y) -> x + y;
Daha kısa bir gösterim için parametre türlerini bırakın:
(x, y) -> x + y;
Hiçbir parametreyi kabul etmeyen bir işlev tanımlayın:
() -> 404;
Aşağıdakiler de geçerlidir ve hiçbir parametre kabul etmez ve hiçbir şey döndürmez:
() -> {}
Tek bir parametre için parametreleri kapsayan parantezlere gerek yoktur:
x -> x + 1.
Daha karmaşık kod blokları da mümkündür. Aşağıdaki lambda tek bir kabul hat parametresi ve üzerinde bazı işlemler yapar. Parametrenin türünün çevredeki bağlamdan çıktığını unutmayın:
satır -> { String [] x = pattern.split (satır); yeni Oyuncu döndür (Integer.parseInt (x [0]), x [1], x [2], x [3], Integer.parseInt (x [4])); }
Temiz ve Kısa Kodlama
Lambda ifadeleri kullanmak, kodunuzu temiz ve özlü hale getirmenize yardımcı olur. Bu konuda yardımcı olmak için Java 8 sınıfları lambdaları yoğun olarak kullanır.
Bir Liste veya Küme Üzerinde Döngü
Gibi toplama sınıfları Liste, Ayarlamak, kuyrukve bu şekilde iterable elemanlar üzerinde döngü çok daha kolay hale getirir arayüzü.
Bir ad listesi bildirin.
Liste names = Arrays.asList ("Joe", "Jack", "James", "Albert");
Listede lambda olmadan döngü yapın:
for (Dize adı: adlar) {System.out.println (ad); }
Lambda'yı kullanarak, yukarıdaki döngü şöyle yazılabilir:
ad.forEach (ad -> System.out.println (ad));
Java 8 yöntem referansları ile yukarıdakiler daha kısaca şöyle yazılabilir:
names.forEach (System.out:: println);
Bir Harita Üzerinde Döngü
bir harita anahtarların değerlerle eşleştirilmesidir. Bir harita üzerinde döngü yapmak, (anahtar, değer) eşlemelerinin her biri üzerinde döngü oluşturmayı içerir. Bu durum için lambdaları nasıl kullanabileceğinizi karşılaştırın.
Önce bir harita tanımlayın:
harita map = yeni HashMap <> (); map.put ("Atlanta, Georgia", 110); map.put ("Austin, Teksas", 115); map.put ("Baltimore, Maryland", 105); map.put ("Birmingham, Alabama", 99); map.put ("Boston, Massachusetts", 98);
Bu harita üzerinde geleneksel bir şekilde döngü yapabilirsiniz:
(Harita. giriş e: map.entrySet ()) {System.out.println (e.getKey () + "=>" + e.getValue ()); }
Lamdas kullanarak aynı şeyi hızlı ve özlü bir şekilde nasıl yapabileceğiniz aşağıda açıklanmıştır:
map.forEach ((k, v) -> System.out.println (k + "=>" + v));
Fonksiyonel Arayüzler
Lambda ifadesinin dönüş türü nedir? Başka bir deyişle, türü nedir X aşağıdaki açıklamada?
X x = a -> a + 1;
Bir lambda ifadesinin dönüş türü bir fonksiyonel arayüz - tek bir soyut yöntemle bir arayüz. Uyumlu bir soyut yöntemle bir arayüze lambda ifadesi atayabilirsiniz. Aşağıda bazı örnekler.
Çok İş parçacıklı Görev Oluşturma
İçin bir görev oluşturmayı düşünün ayrı bir iş parçacığında yürütme Java'da Çok İş parçacıklı Kod Yazma YöntemleriBu makalede, Java'da çok iş parçacıklı kod yazmak için birkaç seçeneği karşılaştırıyoruz, böylece bir sonraki Java projeniz için hangi seçeneği kullanacağınızı daha iyi değerlendirebilirsiniz. Daha fazla oku - görevi bir Runnable arayüz ve uygulamak Çalıştırmak() yöntem. Buraya Runnable işlevsel bir arayüzdür.
sınıf MyTask Runnable uygular {... public void run () {// görevinizi buraya uygulayın System.out.println ("Şimdi ayrı bir iş parçacığında çalışıyor."); }... }
Ardından, Benim görevim sınıfını kullanın ve yeni bir yürütme iş parçacığı başlatmak için kullanın.
MyTask görevi = yeni MyTask (); Thread thread = yeni Konu (görev); thread.start ();
Bir lambda kullanarak, bir Runnable çok daha kolay hale gelir. Yukarıdaki görev tanımı şu şekilde yeniden yazılabilir:
Runnable task = () -> System.out.println ("Şimdi ayrı bir iş parçacığında çalışıyor.");
Ya da:
Thread thread = new Thread (() -> System.out.println ("Şimdi ayrı bir dizide çalıştırılıyor.")); thread.start ();
Karşılaştırıcı Kullanarak Karşılaştırma
Karşılaştırıcı belirli bir türdeki nesneleri karşılaştırmak için işlevsel bir arabirimdir. Tek bir soyut yöntemi tanımlar. karşılaştırmak() bu bir lambda ifadesi kullanılarak tanımlanabilir.
İşte bir lambda ifadesi Karşılaştırıcı dizeleri büyük / küçük harfe duyarsız olarak karşılaştırmak için kullanılır.
Karşılaştırıcı cmp = (x, y) -> x.compareToIgnoreCase (y);
Bir kez Karşılaştırıcı fonksiyonel arayüz oluşturuldu, gerektiğinde tekrar kullanılabilir.
Burada, dizelerin listesini artan sırada sıralıyoruz.
Liste names = Arrays.asList ("Joe", "Jack", "James", "Albert"); Collections.sort (adlar, cmp); names.forEach (System.out:: println); // yazdırır. Albert. Jack. James. Joe.
Yukarıdaki liste yerinde sıralanmıştır. Şimdi bunu kullanarak arama yapabiliriz Ikili arama() yöntemi aşağıdaki gibi:
System.out.println ("arama (Joe):" + Collections.binarySearch (adlar, "Joe", cmp)); # yazdırır. arama (Joe): 3.
Lamdas kullanarak bir listeden maksimum ve minimum hesaplamak da kolaydır.
Bazı verileri tanımlayın:
Liste temps = Arrays.asList (110, 115, 105, 99, 98, 54, 109, 84, 81, 66, 72, 135, 115, 75, 82, 90, 88);
Karşılaştırıcıyı tanımlamak için bir lambda ifadesi kullanın:
Karşılaştırıcı cmpTemp = (x, y) -> Tamsayı. karşılaştırması (x, y);
Ve maksimum ve minimumları yazdırın:
System.out.println ("Maks / Min"); System.out.println (Collections.max (temps, cmpTemp) + "/" + Collections.min (temps, cmpTemp));
GUI Programlamasında Kullanım
Lambda ifadeleri, olay işleyicilerini uygulamak için GUI programlamasında da son derece yararlıdır. Düğme tıklama işleyicisini kullanma örneği.
JButton düğmesi = yeni JButton ("Beni tıkla"); button.addActionListener (e -> System.out.println ("Düğme tıklandı!"));
Bu, Java 8'de lambdas kullanmaya hızlı bir bakıştı.
Lambdas Java 8'den beri hayatınızı kolaylaştırdı mı? Lütfen aşağıdaki yorumlarda açıklayınız.