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 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 highEarners = employees.stream() .filter(e -> e.salary() > 15000) .collect(Collectors.toList()); // Map: Sadece isimleri al List 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> byDept = employees.stream() .collect(Collectors.groupingBy(Employee::department)); // Departman bazında ortalama maaş Map avgByDept = employees.stream() .collect(Collectors.groupingBy( Employee::department, Collectors.averagingDouble(Employee::salary) )); // Zincir: En yüksek maaşlı Engineering çalışanı Optional 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)); } }