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
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));
}
}
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));
}
}
AI Asistan
Sorularını yanıtlamaya hazır