Ev Kişisel Finans Java'da Streams ve Lambda İfadeleri kullanarak Java'da

Java'da Streams ve Lambda İfadeleri kullanarak Java'da

Video: Lambda Calculus ve Fonksiyonel Programlama (Java Eğitim 8) Part 1/2 2025

Video: Lambda Calculus ve Fonksiyonel Programlama (Java Eğitim 8) Part 1/2 2025
Anonim

Java, akışları ve lambda ifadelerinden en iyi şekilde yararlanan fantezi yöntemlere sahiptir. Dereler ve lambda ifadeleri ile bir montaj hattı oluşturabilirsiniz. Montaj hattı çözümü, fonksiyonel programlamadan gelen kavramları kullanır.

Montaj hattı birkaç yöntemden oluşur. Her yöntem, verileri alır, veriyi bir şekilde veya başka bir biçimde dönüştürür ve sonuçlarını bir sonraki satırdaki metoda verir. İşte bir montaj hattı.

Fonksiyonel bir programlama montaj hattı.

Her bir kutu, bir montaj hattı boyunca dönüşüm sağladığı için bir grup hammaddenin temsilidir. Her ok bir metodu (veya metaforik olarak, montaj hattındaki bir işçiyi) temsil eder.

Örneğin, ikinci kutudan üçüncü kutuya geçişte, bir işçi yöntemi ( filtre yöntemi) DVD olmayan öğelerin satışlarını azaltıyor. Lucy Ricardo'nun ikinci ve üçüncü kutular arasında durduğunu, her kitabı veya CD'yi montaj hattından çıkarıp tabana dikkatsizce attığını düşünün.

Java'nın filtre yönteminin parametresi, Faturalama - boolean olan bir lambda ifadedir. filtre yöntemi, lambda ifadesinin doğru / yanlış testini geçmeyen öğeleri siler.

Bazı Fonksiyonel Programlama Yöntemleri
Yöntem Adı Üye Parametre (ler) Sonuç Türü Sonuç Değeri
Akım Koleksiyon (örneğin ArrayList , nesne) (none) Akış Koleksiyon
filtresinin Akışı Faturalama Akış öğelerini tüküren bir akış > Lambda ifadesinin döndürdüğü değerleri içeren yeni bir akış true map
Stream İşlev Stream Gelen akıma lambda ifadesinin uygulanması sonuçlarını içeren yeni bir akış azaltın
Akış İkili Operatör İkili Operatör tarafından kullanılan türü Gelen akıştaki tüm değerleri birleştiren sonuç

harita yöntemi) her fiyatından fiyat Satılık . İşçinin bulunduğu yerden itibaren montaj hattı yalnızca fiyat değerlerini içerir. Daha kesin olmak gerekirse, Java'nın harita

yöntemi, (satış) -> satış gibi bir İşlev alır. getFice () ve bir akışın her bir değerine

İşlev

'i uygular. Bu nedenle, map yöntemi, satış nesnelerinin akışını alır ve bir fiyat değerinde giden bir akış oluşturur. Dördüncü kutudan beşinci kutuya geçişte bir işçi yöntemi ( azalt

yöntemi), DVD satışlarının fiyatlarını artırır.Java'nın azalt yöntemi iki parametre alır: İlk parametre bir başlangıç ​​değeridir. Yukarıdaki resimde, başlangıç ​​değeri

0'dır. 0

. İkinci parametre Çift İşlevli

'dır. Yukarıdaki resimde, azalt yönteminin

İkili Operatör (fiyat1, fiyat2) -> fiyat1 + fiyat2 azaltın

yöntemidir

BinaryOperator 'ı kullanır ve gelen akışın değerlerini birleştirir. Başlangıç ​​değeri tüm birleştirmenin başlangıç ​​noktası olarak kullanılır. Yani, azalt yöntemi iki ekleme yapar. reduce yöntemi, gelen bir akıştan iki değer ekler. Karşılaştırma için, yöntemini çağırarak değerler

3 olan akışla (10..0, (value1, value2) -> value1 * value2)

azaltmayı düşünün. 0

,

2. 0 ve 5. 0 . Ortaya çıkan eylem aşağıda altında gösterilmektedir. İndirme yöntemi, gelen bir akışın değerlerini çarpar. Google'ın MapReduce programlama modelini duymuş olabilirsiniz. Programlama modelinin adı ile Java yöntem adları eşlem

ve

azaltmak arasındaki benzerlik tesadüf değildir. Bir bütün olarak ele alındığında, tüm montaj satışı DVD'lerin fiyatlarını sattı. Yukarıdaki kod, akışları ve lambda ifadelerini yukarıdaki ilk resmi kullanarak eksiksiz bir program içerir. import java. Metin. NumberFormat; import java. util. ArrayList;

public class TallySales {

public static void main (String [] args) {

ArrayList

sales = new ArrayList <> ();

NumberFormat currency = NumberFormat. getCurrencyInstance ();

fillTheList (satış); çift toplam = satış. akım ()

. filtre ((satış) -> satış.getItem (). equals ("DVD"))

. harita ((satış) -> satış. getPrice ())

. azaltmak (0,0, (fiyat1, fiyat2) -> fiyat1 + fiyat2);

Sistem. dışarı. println (para birimi biçimi (toplam));

}

static void fillTheList (ArrayList

satış) {

satış. eklemek (yeni Satış ("DVD", 15.00));

satış. eklemek (yeni Satış ("Kitap", 12.00)); satış. eklemek (yeni Satış ("DVD", 21. 00));

satış. eklemek (yeni Satış ("CD", 5. 25));

}

}

Kod, Java 8 veya üstünü gerektirir. IDE'niz önceki bir Java sürümüne ayarlıysa, IDE ayarlarıyla bağlantı kurmanız gerekebilir. Hatta Java'nın daha yeni bir sürümünü indirmeniz gerekebilir.

Kalınlık büyük bir Java atama ifadesi. Deyiminin sağ tarafında bir dizi yöntem çağrısı bulunur. Her yöntem çağrısı bir nesne döndürür ve bu tür her nesne sonraki yöntem çağrısında nokta önündeki şeydir. Montaj hattını böyle biçimliyorsunuz.

Örneğin, kalın kodun başlangıcına yakın bir yerde

satış

adı

ArrayList nesnesine karşılık gelir. Her ArrayList nesnesinde akış yöntemi bulunur. Yukarıdaki kodda satış. stream () , ArrayList nesnesinin akış yöntemine yapılan çağrıdır. Akış yöntemi, Java'nın Akış sınıfının bir örneğini döndürür. (Ne sürpriz!) So

satış. stream () Akış nesnesini belirtir. Tüm DVD satışlarını elde etmek. Her Akış

nesnesi

filtre yöntemine sahiptir. Yani satış. Akış(). , ⁣Stream

nesnesinin

filtre yöntemini çağıran addType (). equals ("DVD")). Desen devam ediyor. Akış nesnesinin

harita yöntemi, fiyatları içeren bir Akış nesnesi olan başka bir Akış nesnesi döndürür. Her bir DVD satışından fiyata ulaşma. Bu Akış

fiyatlarına,

azaltın yöntemini uygulayarak, bir DVD fiyatının toplamından bir çift değer elde edersiniz. Tüm DVD satışlarının toplam bedelini elde etmek.

Java'da Streams ve Lambda İfadeleri kullanarak Java'da

Editörün Seçimi

Genişletme Bağlantılar ve Bina Robotları için Pinouts - mankenler

Genişletme Bağlantılar ve Bina Robotları için Pinouts - mankenler

Eğer bir robot inşa ediyorsanız, çok sayıda elektrik bağlantısı, bu yüzden çok sayıda iğne ile uğraşıyorsunuz. Aşağıdaki tabloda, genişleme konektörleri ve pim numaraları için sinyal gösterilmektedir. İstenmeyen çapraz bağlantıları önlemeye yardımcı olabilir. Genişletme Konnektörü Pin Numarası Sinyal Genleşmesi Konnektör Pin Numarası Sinyal 1, 2 Toprak 16 P11 Yeşil LED 3, 4 + 5 ...

Dizinler içeren Kablosuz Erişim Noktalarını bulma - mankenler

Dizinler içeren Kablosuz Erişim Noktalarını bulma - mankenler

Sıcak noktaları bulma konusunda çevrimiçi dizinler, gezinmek için mükemmel bir araçtır. ABD, Kanada ve dünyadaki artan sayıda sıcak nokta. Size kolaylık sağlamak için, bu dizinlerden bazıları. Dizin Notları JiWire WiFi Bulucu 144 ülkede ücretsiz ve ücretli Wi-Fi yerleri dizini sağlar. AT & T ...

Ham Radyoda genel Sınıf Frekans Ayrıcalıkları - mankenler

Ham Radyoda genel Sınıf Frekans Ayrıcalıkları - mankenler

Yakında yapmadıysanız, siz Yükseltmeyi düşünüyorum. Aşağıdaki tabloda gösterildiği gibi, yüksek frekanslı (HF) bantlarda kullanmak için daha fazla frekansa sahipsiniz. Tüm lisans sınıfları için ABD frekansı ve mod ayrıcalıklarının eksiksiz bir listesi, Amerikan Radyo Röle Ligi'nden (ARRL) edinilebilir. Bant Frekansları ...

Editörün Seçimi

Adobe Flash CS6'da Maske Katmanlarını Kullanma - mankenler

Adobe Flash CS6'da Maske Katmanlarını Kullanma - mankenler

Adobe Flash CS6'da maskeleme kavramı Bir parçanın bölümlerini gizlemek ya da ortaya çıkarmak için bir şekli (ya da şekilleri) kullanır - tıpkı evinizdeki küçük bir pencere aracılığıyla dışarıdan bakmak gibi. Pencere boyutu, içerideyken görebileceğiniz şeyi sınırlar. Flash, özel bir katman özelliklerine sahiptir ...

Flash CS5 3D Rotasyon Aletinin Kullanımı - mankenler

Flash CS5 3D Rotasyon Aletinin Kullanımı - mankenler

Adobe'nin kapsamlı çizim ve animasyon yetenekleri Flash Creative Suite 5, Flash'ın 3D Döndürme aracıyla büyük ölçüde geliştirilebilir. 3B Döndürme aracı, sembolü x, y ve z eksenleri etrafında döndürmek ve dönüştürmek için herhangi bir film klibi örneğinde kullanılabilir. Bir film klibi örneğini 3D olarak oluşturmak için bunları izleyin ...

Flash CS5 3D Çeviri Aletini Kullanma - aumlalar

Flash CS5 3D Çeviri Aletini Kullanma - aumlalar

In 3D Döndürme aracının aksine Flash CS5 film kliplerini bir eksen etrafında döndüren Adobe Flash Creative Suite 5, 3D Çeviri aracı, bir film klibini algılanan mesafeyi ve sahnedeki diğer nesnelere göre derinliğini değiştirmek için belirli bir eksende kaydırır. Bu kavramı üçlü düşünün ...

Editörün Seçimi

Pratik İlköğretim Sınavı-Grafik Çözümleri - mankenler

Pratik İlköğretim Sınavı-Grafik Çözümleri - mankenler

Praxis İlköğretim sınavının Matematik bölümü bir dizi çizgide bir eşitsizliğe çözüm bulmanızı gerektiren bir soru. Başlamak için, çözümdeki sayıya bir nokta koyarsınız. Sembolü> veya

Pratik İlk Öğretim Sınavı-Ölüm Şekilleri - mankenler

Pratik İlk Öğretim Sınavı-Ölüm Şekilleri - mankenler

Praxis İlköğretim Matematik ve Bilim bölümleri Eğitim sınavı, farklı ölçme şekillerine aşina olmanız gereken sorular içerir. Ölçümler, çeşitli tiplerde tanımlanabilir. Mesafe için İngilizce sistem birimleri inç, feet, metre ve mil içerir. Bunlar birbirine dayanır. Bir ayak 12 ...

Pratik İlk Öğretim Sınavı-Akıcılık - mankenler

Pratik İlk Öğretim Sınavı-Akıcılık - mankenler

Praxis İlköğretim sınavı, yardımcı stratejilerinizi test eden sorular içerir öğrenciler akıcılıklarını İngilizce olarak geliştirirler. Bu stratejiler, grafik düzenleyicileri kullanarak ve çıkarımlar yapmayı içerebilir. Akıcı bir okuyucu, sınıf düzeyinde bir metni doğruluk, çabukluk ve ifade ile okuyabilir.