Middle+
Stream'te özyineleme yöntemi nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
// Stream API'de özyineleme doğrudan desteklenmez.
// Metodun adı reduce'dir.
Stream API'deki reduce metodu, akıştaki öğeleri tek bir sonuç değeri haline getirmek için ikili bir işlem uygular.
reduce metodunun üç aşırı yüklemesi vardır:
-
Optional<T> reduce(BinaryOperator<T> accumulator): Akıştaki öğelere bir azaltma operatörü uygular ve birOptional<T>döner. Başlangıç değeri olmadığında kullanılır. -
T reduce(T identity, BinaryOperator<T> accumulator): Belirtilen başlangıç değeri (identity) ile azaltma operatörünü uygular. SonuçTtüründe olur. -
<U> U reduce(U identity, BiFunction<U, ? super T, U> accumulator, BinaryOperator<U> combiner): En genel formdur, paralel akışlar için uygundur.identity: Akümülatorun başlangıç değeri.accumulator: Bir akış öğesini akümülator ile birleştirir.combiner: Paralel hesaplamaların sonuçlarını birleştirir.
Kullanım örneği:
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
public class StreamReduceExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
// Örnek 1: Başlangıç değeri olmadan toplam
Optional<Integer> sumOptional = numbers.stream()
.reduce((a, b) -> a + b);
sumOptional.ifPresent(sum -> System.out.println("Toplam (Optional): " + sum));
// Örnek 2: Başlangıç değeri ile toplam
int sumWithIdentity = numbers.stream()
.reduce(0, (a, b) -> a + b);
System.out.println("Toplam (identity ile): " + sumWithIdentity);
// Örnek 3: Paralel akış ile stringleri birleştirme
List<String> words = Arrays.asList("Hello", " ", "World", "!");
String combinedString = words.parallelStream()
.reduce("", // başlangıç değeri
(a, b) -> a + b, // akümülator
(a, b) -> a + b); // birleştirici
System.out.println("Birleştirilmiş string: " + combinedString);
}
}