Yeni Başlayanlar için Java Akışları: Java'da Akışları Kullanmaya Giriş

Yeni Başlayanlar için Java Akışları: Java'da Akışları Kullanmaya Giriş

Java 8 akışları, geliştiricilerin önceden tanımlanmış bir dizi işlem kullanarak geniş bir koleksiyondan kesin verileri çıkarmasına olanak tanır.





Java 8'in piyasaya sürülmesinden önce, Java'da 'akış' teriminin kullanılması, otomatik olarak I/O ile ilişkilendirilirdi. Ancak Java 8, yaygın olarak 'akış hattı' olarak adlandırılan şeyde zincirlenmiş bir dizi hesaplama adımı olarak ifade edilebilecek bir akış tanıttı.





Bu makale size Java 8 akışlarını tanıtacak ve projelerinizde nasıl faydalı olabileceklerini gösterecek.





Akış Nedir?

Akış, bir kaynak 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. Temel olarak, genelleştirilmiş bir veri koleksiyonundan özel veriler çıkarmanıza olanak tanır.

Akışlar Nasıl Çalışır?

Bir akış hattı her zaman bir kaynakla başlar. Kaynağın türü, uğraştığınız veri türüne bağlıdır, ancak daha popüler olanlardan ikisi diziler ve koleksiyonlardır.



Koleksiyonu ilk akışa dönüştürmek için şunları eklemeniz gerekir: aktarım() kaynağına işlev. Bu, kaynağı birkaç farklı ara işlemin (ör. filtre() ve çeşit() ) üzerinde çalışabilir.

Gerekli tüm ara işlemler yapıldıktan sonra, bir terminal işlemi başlatabilirsiniz (örneğin, her biri için() ), daha önce kaynaktan çıkarılan verileri üretecektir.





Akışsız Yaşam

Java 8 2014'te piyasaya sürüldü, ancak bundan önce Java geliştiricilerinin bir genel veri koleksiyonundan özel verileri çıkarmaları gerekiyordu.

wii'de nintendont nasıl edinilir

Diyelim ki, benzersiz dize değerleri oluşturmak için rastgele sayılarla birleştirilen rastgele karakterler listeniz var, ancak yalnızca C karakteriyle başlayan değerleri istiyorsunuz ve sonucu artan sırada düzenlemek istiyorsunuz. Bu verileri akışlar olmadan bu şekilde çıkarırsınız.





İlgili: Java'da Dize Kullanımı Hakkında Bilmeniz Gerekenler

Akışlar Olmadan Değerleri Filtreleme ve Sıralama Örneği


import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//declare and initialize the array list
List 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'
);
//declare the array list will store needed values
List requiredValues = new ArrayList();
//extracting the required values and storing them in reqquiredValues
randomValues.forEach(value -> {
if(value.startsWith('C')) {
requiredValues.add(value);
}
});
//sort the requiredValues in ascending order
requiredValues.sort((String value1, String value2) -> value1.compareTo(value2));
//print each value to the console
requiredValues.forEach((String value) -> System.out.println(value));
}
}

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.

İlgili: Java'da Dizilerde İş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

Akışlarla Yaşam

Programlamada verimlilik, aynı sonucu önemli ölçüde daha az kodla üretmek anlamına gelir. Bu tam olarak bir programcı için bir akış hattının yaptığı şeydir. Bir dahaki sefere birisi sorduğunda: projenizde akışları kullanmak neden önemlidir? Basitçe söylemek gerekirse: akışlar verimli programlamayı destekler.

Yukarıdaki örneğimizle devam edersek, akışların tanıtılması tüm programı bu şekilde dönüştürür.

Bir Akış Örneği ile Değerleri Filtreleme ve Sıralama


import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//declare and initialize the array list
List 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'
);
//retrieves only values that start with C, sort them, and print them to the console.
randomValues.stream().filter(value->value.startsWith('C')).sorted().forEach(System.out::println);
}
}

Yukarıdaki kod, akış arayüzünün ne kadar güçlü olduğunu gösterir. Rastgele dizi değerlerinin bir listesini alır ve bunu kullanarak bir akışa dönüştürür. aktarım() işlev. Akış daha sonra gerekli değerleri içeren bir dizi listesine indirgenir (bununla başlayan tüm değerlerdir). C ), kullanmak filtre() işlev.

Yukarıdaki örnekte de 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() işlevi, yeni diziyi artan sırada yeniden düzenlemek için akış hattına tanıtıldı.

Akış boru hattındaki son işlev bir her biri için() işlev. Bu, akış hattını durdurmak için kullanılan ve konsolda aşağıdaki sonuçları üreten bir terminal işlevidir:


C11
C12
C13
C14
C15
C16

Ara İşlemleri Akış

Bir akış hattında kullanılabilecek kapsamlı bir ara işlemler listesi vardır.

Bir akış hattı her zaman tek bir kaynakla başlar ve aktarım() işlevi vardır ve her zaman tek bir terminal işlemiyle biter (ancak aralarından seçim yapabileceğiniz birkaç farklı işlem vardır.) Ancak bu iki bölüm arasında kullanabileceğiniz altı ara işlemin bir listesi vardır.

Yukarıdaki örneğimizde, bu ara işlemlerden sadece ikisi kullanılmıştır--- filtre() 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 harf olsaydı ve aynı ara işlemleri üzerlerinde yapsaydık aşağıdaki sonucu alırdık.

Küçük Harf Değerlerinde Filtreleme ve Sıralama İşlemleri Gerçekleştirme Örneği


import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//declare and initialize the array list
List 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'
);
//retrieves only values that start with C, sort them, and print them to the console.
randomValues.stream().filter(value->value.startsWith('C')).sorted().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 çıktıları doğru bir şekilde temsil etmemesidir. C dizi listemizdeki değerler. Bu küçük hatayı düzeltmenin iyi bir yolu, akış hattına başka bir ara işlem eklemektir; bu işlem olarak bilinir harita() işlev.

Harita İşlevini Kullanma Örneği


import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//declare and initialize the array list
List 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'
);
//transforms all lower case characters to upper case,
//retrieves only values that start with C, sort them, and print them to the console.
randomValues.stream().map(String::toUpperCase).filter(value->value.startsWith('C')).sorted().forEach(System.out::println);
}
}

NS harita() işlev, bir nesneyi bir durumdan diğerine dönüştürür; yukarıdaki örneğimizde dizi listesindeki tüm küçük harfleri büyük harflere dönüştürür.

yerleştirme harita() işlevinden hemen önce filtre() işlev ile başlayan tüm değerleri alır C dizi listesinden.

Yukarıdaki kod, konsolda aşağıdaki sonucu üretir ve tüm öğeleri başarıyla temsil eder. 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()
  • sınır()
  • atlamak()

Java 8 Akışları Verimli Kodun Oluşturulmasını Kolaylaştırıyor

Java 8 akışlarıyla, tek satır kodla büyük bir kaynaktan ekstra özel, alakalı veriler elde edebilirsiniz. Baş harfini eklediğiniz sürece aktarım() işlevi ve bir terminal operatörü, hedefinize uygun çıktılar sağlayan herhangi bir ara işlem kombinasyonunu kullanabilirsiniz.

Android'de bağlı wifi şifresi nasıl öğrenilir

İçimizdeki 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 faydalı bulabileceğiniz birçok külçeye sahiptir.

Paylaş Paylaş Cıvıldamak E-posta Java 8 Lambda'lara Hızlı Giriş

Bir Java programcısıysanız ve Java 8 lambdaları hakkında daha fazla bilgi edinmek istiyorsanız, bu makalede lambda sözdizimine ve kullanımına daha yakından bakacağız.

Sonrakini Oku
İlgili konular
  • Programlama
  • Java
  • Kodlama Eğitimleri
Yazar hakkında Kadeisha Kean(21 Makale Yayınlandı)

Kadeisha Kean, Full-Stack Yazılım Geliştirici ve Teknik/Teknoloji Yazarıdır. En karmaşık teknolojik kavramların bazılarını basitleştirme konusunda belirgin bir yeteneğe sahiptir; her teknoloji acemisinin kolayca anlayabileceği malzeme üretmek. Yazmak, ilginç yazılımlar geliştirmek ve dünyayı gezmek (belgeseller aracılığıyla) konusunda tutkulu.

Kadeisha Kean'dan Daha Fazla

Haber bültenimize abone ol

Teknik ipuçları, incelemeler, ücretsiz e-kitaplar ve özel fırsatlar için bültenimize katılın!

Abone olmak için buraya tıklayın