İçeriğe geç
java

Java Stream ile Map/Filter/Reduce

Java Stream API ile koleksiyonlar üzerinde filter, map, reduce ve collect işlemleri. Pratik örnekler.

By Tolgahan · · 289 görüntülenme
java
import java.util.*;
import java.util.stream.*;

public class StreamExamples {

    record Employee(String name, String department, double salary) {}

    public static void main(String[] args) {
        List<Employee> employees = List.of(
            new Employee("Ali", "Engineering", 15000),
            new Employee("Ayse", "Engineering", 18000),
            new Employee("Mehmet", "Marketing", 12000),
            new Employee("Fatma", "Engineering", 20000),
            new Employee("Can", "Marketing", 14000)
        );

        // Filter: Maaşı 15000 üzerinde olanlar
        List<Employee> highEarners = employees.stream()
            .filter(e -> e.salary() > 15000)
            .collect(Collectors.toList());

        // Map: Sadece isimleri al
        List<String> names = employees.stream()
            .map(Employee::name)
            .collect(Collectors.toList());

        // Reduce: Toplam maaş
        double totalSalary = employees.stream()
            .map(Employee::salary)
            .reduce(0.0, Double::sum);

        // GroupingBy: Departmana göre grupla
        Map<String, List<Employee>> byDept = employees.stream()
            .collect(Collectors.groupingBy(Employee::department));

        // Departman bazında ortalama maaş
        Map<String, Double> avgByDept = employees.stream()
            .collect(Collectors.groupingBy(
                Employee::department,
                Collectors.averagingDouble(Employee::salary)
            ));

        // Zincir: En yüksek maaşlı Engineering çalışanı
        Optional<Employee> topEngineer = employees.stream()
            .filter(e -> e.department().equals("Engineering"))
            .max(Comparator.comparingDouble(Employee::salary));

        System.out.println("High earners: " + highEarners);
        System.out.println("Total salary: " + totalSalary);
        System.out.println("Avg by dept: " + avgByDept);
        topEngineer.ifPresent(e -> System.out.println("Top engineer: " + e));
    }
}
Bu snippet'i göm
<iframe src="https://tolgahan.dev/snippets/java-stream-ile-map-filter-reduce/embed" width="100%" height="400" frameborder="0"></iframe>
Paylaş: