Java 8 akışları, geliştiricilerin önceden tanımlanmış bir dizi işlem kullanarak büyük bir koleksiyondan kesin veriler çıkarmasına olanak tanır.
Java 8'in piyasaya sürülmesinden önce, Java'da "akış" terimini kullanmak otomatik olarak G / Ç ile ilişkilendirilirdi. Bununla birlikte, Java 8, genel olarak "akış boru hattı" olarak adlandırılan şeyde birbirine zincirlenmiş bir dizi hesaplama adımı olarak adlandırılabilecek bir akış getirmiştir.
Bu makale size Java 8 akışlarını tanıtacak ve projelerinizde nasıl yararlı olabileceklerini gösterecektir.
Akış Nedir?
Akış, bir kaynağı alan, belirli verileri çıkarmak için bir dizi işlem gerçekleştiren ve ardından bu verileri kullanım için uygulamaya sağlayan bir Java arabirimidir. Esasen, genelleştirilmiş bir veri koleksiyonundan özel veriler çıkarmanıza olanak tanır.
Akışlar Nasıl Çalışır?
Bir akış ardışık düzeni her zaman bir kaynakla başlar. Kaynağın türü, uğraştığınız verilerin türüne bağlıdır, ancak en popüler olanlardan ikisi diziler ve koleksiyonlardır.
Koleksiyonu bir başlangıç akışına dönüştürmek için, Akış() kaynağa işlev. Bu, kaynağı birkaç farklı ara işlemin (örneğin filtre () ve çeşit()) üzerinde çalışabilir.
Gerekli tüm ara işlemler yapıldıktan sonra, bir terminal işlemi (örn. her biri için()), kaynaktan daha önce çıkarılan verileri üretecektir.
Akışı Olmayan Hayat
Java 8 2014 yılında piyasaya sürüldü, ancak bundan önce Java geliştiricilerinin genel veri koleksiyonundan özel veriler çıkarması gerekiyordu.
Benzersiz dize değerleri oluşturmak için rastgele sayılarla birleştirilen rastgele karakterler listeniz olduğunu varsayalım. ancak yalnızca "C" karakteriyle başlayan değerleri istiyor ve sonucu artan şekilde düzenlemek istiyorsunuz. sipariş. Bu verileri akışlar olmadan bu şekilde çıkarırsınız.
İlişkili: Java'da Dizeleri Kullanma Hakkında Bilmeniz Gerekenler
Akışlar Olmadan Değerleri Filtreleme ve Sıralama Örneği
java.util içe aktarın. ArrayList;
java.util içe aktarın. Diziler;
java.util içe aktarın. Liste;
public class Ana {
public static void main (String [] args) {
// dizi listesini bildirir ve başlatır
Liste randomValues = Arrays.asList (
"E11", "D12", "A13", "F14", "C15", "A16",
"B11", "B12", "C13", "B14", "B15", "B16",
"F12", "E13", "C11", "C14", "A15", "C16",
"F11", "C12", "D13", "E14", "D15", "D16"
);
// dizi listesinin gerekli değerleri depolayacağını bildirin
Liste requiredValues = new ArrayList <> ();
// gerekli değerleri ayıklamak ve onları reqquiredValues içinde depolamak
randomValues.forEach (değer -> {
if (value.startsWith ("C")) {
requiredValues.add (değer);
}
});
// gerekliDeğerleri artan sırada sıralayın
requiredValues.sort ((Dize değer1, Dize değer2) -> değer1.compareTo (değer2));
// her bir değeri konsola yazdırın
requiredValues.forEach ((Dize değeri) -> System.out.println (değer));
}
}
Ayrıca, akışları veya başka bir çıkarma yöntemi kullanıyor olsanız da, dizi listesini bildirmeniz ve başlatmanız gerekir. Akışları kullanıyorsanız yapmanız gerekmeyen şey, gerekli değerleri tutmak için yeni bir değişken bildirmek veya yukarıdaki örnekte diğer beş artı kod satırını oluşturmaktır.
İlişkili: Java'da Diziler Üzerinde İşlemler Nasıl Oluşturulur ve Gerçekleştirilir
Yukarıdaki kod, konsolda aşağıdaki çıktıyı üretir:
C11
C12
C13
C14
C15
C16
Akarsularla Yaşam
Programlamada verimlilik, aynı sonucu önemli ölçüde daha az kodla üretmek anlamına gelir. Bu tam olarak bir programcı için akış ardışık düzeninin yaptığı şeydir. Öyleyse bir dahaki sefere birisi sorduğunda: "Projenizde akışları kullanmak neden önemlidir?" Basitçe ifade etmek gerekirse: "akışlar verimli programlamayı destekler."
Yukarıdaki örneğimizle devam edersek, akışları tanıtmanın tüm programı nasıl dönüştürdüğünü görürüz.
Bir Akış Örneğiyle Değerleri Filtreleme ve Sıralama
java.util içe aktarın. Diziler;
java.util içe aktarın. Liste;
public class Ana {
public static void main (String [] args) {
// dizi listesini bildirir ve başlatır
Liste randomValues = Arrays.asList (
"E11", "D12", "A13", "F14", "C15", "A16",
"B11", "B12", "C13", "B14", "B15", "B16",
"F12", "E13", "C11", "C14", "A15", "C16",
"F11", "C12", "D13", "E14", "D15", "D16"
);
// yalnızca C ile başlayan değerleri alır, sıralar ve konsola yazdırır.
randomValues.stream (). filter (değer-> değer.startsWith ("C")). sıralı (). forEach (System.out:: println);
}
}
Yukarıdaki kod, akış arayüzünün ne kadar güçlü olduğunu göstermektedir. Rastgele dizi değerlerinin bir listesini alır ve bunu kullanarak bir akışa dönüştürür. Akış() işlevi. Akış daha sonra gerekli değerleri içeren bir dizi listesine indirgenir (bu, C), kullanmak filtre () işlevi.
Yukarıdaki örnekte görebileceğiniz gibi, C değerler dizi listesinde rastgele düzenlenir. Akışı boru hattının bu noktasında yazdıracak olsaydınız, değer C15 önce basılacaktır. bu yüzden çeşit() yeni diziyi artan sırada yeniden düzenlemek için akış ardışık düzenine işlev eklenir.
Akış boru hattındaki son işlev bir her biri için() işlevi. Bu, akış ardışık düzenini durdurmak için kullanılan ve konsolda aşağıdaki sonuçları üreten bir terminal işlevidir:
C11
C12
C13
C14
C15
C16
Bir akış boru hattında kullanılabilecek kapsamlı bir ara işlemler listesi vardır.
Bir akış ardışık düzeni her zaman tek bir kaynak ve bir Akış() işlevini yerine getirir ve her zaman tek bir terminal işlemiyle sona erer (ancak birkaç farklı seçim yapın.) Ancak bu iki bölüm arasında, yapabileceğiniz altı ara işlemin bir listesi vardır. kullanın.
Yukarıdaki örneğimizde, bu ara işlemlerden yalnızca ikisi kullanılmıştırfiltre () ve çeşit(). Seçtiğiniz ara işlem, gerçekleştirmek istediğiniz görevlere bağlı olacaktır.
Yukarıdaki dizi listemizde "C" ile başlayan değerlerden herhangi biri küçük harfli olsaydı ve bunlar üzerinde aynı ara işlemleri gerçekleştirirsek, aşağıdaki sonucu alırdık.
Küçük Harfli Değerlerde Filtre ve Sıralama İşlemleri Gerçekleştirme Örneği
java.util içe aktarın. Diziler;
java.util içe aktarın. Liste;
public class Ana {
public static void main (String [] args) {
// dizi listesini bildirir ve başlatır
Liste randomValues = Arrays.asList (
"E11", "D12", "A13", "F14", "C15", "A16",
"B11", "B12", "c13", "B14", "B15", "B16",
"F12", "E13", "C11", "C14", "A15", "c16",
"F11", "C12", "D13", "E14", "D15", "D16"
);
// yalnızca C ile başlayan değerleri alır, sıralar ve konsola yazdırır.
randomValues.stream (). filter (değer-> değer.startsWith ("C")). sıralı (). forEach (System.out:: println);
}
}
Yukarıdaki kod, konsolda aşağıdaki değerleri üretecektir:
C11
C12
C14
C15
Yukarıdaki çıktıyla ilgili tek sorun, tüm C dizi listemizdeki değerler. Bu küçük hatayı düzeltmenin iyi bir yolu, akış boru hattına başka bir ara işlem tanıtmaktır; bu işlem şu adla bilinir: harita() işlevi.
Harita İşlevi Örneğini Kullanma
java.util içe aktarın. Diziler;
java.util içe aktarın. Liste;
public class Ana {
public static void main (String [] args) {
// dizi listesini bildirir ve başlatır
Liste randomValues = Arrays.asList (
"E11", "D12", "A13", "F14", "C15", "A16",
"B11", "B12", "c13", "B14", "B15", "B16",
"F12", "E13", "C11", "C14", "A15", "c16",
"F11", "C12", "D13", "E14", "D15", "D16"
);
// tüm küçük harf karakterlerini büyük harfe dönüştürür,
// yalnızca C ile başlayan değerleri alır, sıralar ve konsola yazdırır.
randomValues.stream (). map (String:: toUpperCase) .filter (değer-> değer.startsWith ("C")). sıralı (). forEach (System.out:: println);
}
}
harita() işlev bir nesneyi bir durumdan diğerine dönüştürür; Yukarıdaki örneğimizde, dizi listesindeki tüm küçük harfli karakterleri büyük harfli karakterlere dönüştürür.
Yerleştirme harita() işlevinden hemen önce filtre () işlevi ile başlayan tüm değerleri alır C dizi listesinden.
Yukarıdaki kod, konsolda aşağıdaki sonucu üretir ve tüm C dizi listesindeki değerler.
C11
C12
C13
C14
C15
C16
Uygulamalarınızda kullanabileceğiniz diğer üç ara işlem şunları içerir:
- dikizlemek()
- limit ()
- atla ()
Java 8 Akışı Etkili Kod Oluşturmayı Kolaylaştırır
Java 8 akışları ile, tek bir kod satırıyla büyük bir kaynaktan ekstra spesifik, ilgili verileri ayıklayabilirsiniz. Baş harfini eklediğiniz sürece Akış() işlev ve bir terminal operatörü olarak, hedefinize uygun çıktılar sağlayan herhangi bir ara işlem kombinasyonunu kullanabilirsiniz.
Aşağıdaki kod satırını merak ediyorsanız filtre () işlev; "lambda ifadesi" olarak bilinir. Lambda ifadeleri, Java 8 ile sunulan başka bir özelliktir ve yararlı bulabileceğiniz çok sayıda külçe içerir.
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.
Sonrakini Oku
- Programlama
- Java
- Kodlama Eğitimleri
Kadeisha Kean, Tam Yığın Yazılım Geliştiricisi ve Teknik / Teknoloji Yazarıdır. En karmaşık teknolojik kavramlardan bazılarını basitleştirme konusunda farklı bir yeteneği var; herhangi bir teknoloji acemi tarafından kolayca anlaşılabilecek malzeme üretmek. Yazma, ilginç yazılım geliştirme ve dünyayı dolaşma (belgeseller aracılığıyla) konusunda tutkulu.
Haber bültenimize abone ol
Teknoloji ipuçları, incelemeler, ücretsiz e-kitaplar ve özel fırsatlar için haber bültenimize katılın!
Bir adım daha…!
Lütfen size az önce gönderdiğimiz e-postadaki e-posta adresinizi onaylayın.