•
Employee
package com.assignment;
import lombok.Data;
@Data
public class Employee {
private int id;
private String name;
private String department;
private double salary;
private String email;
// 생성자, getter, setter 메소드들을 작성하세요
public Employee(int id, String name, String department, double salary, String email) {
this.id = id;
this.name = name;
this.department = department;
this.salary = salary;
this.email = email;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Java
복사
•
EMSystem.java
package com.assignment;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
public class EMSystem {
// 부서별 직원 필터링 - 특정 부서(department)에 속한 직원들을 필터링하여 반환하는 메소드를 작성하세요.
public List<Employee> filterByDepartment(List<Employee> employees, String department) {
// return employees.stream()
// .filter(employee -> department.contains(employee.getDepartment()))
// .collect(Collectors.toList());
return employees.stream()
.filter(employee -> employee.getDepartment().equals(department))
.toList();
}
// 직원 이메일 목록 추출 - 모든 직원의 이메일 주소를 추출하여 리스트로 반환하는 메소드를 작성하세요.
public List<String> getEmailAddresses(List<Employee> employees) {
return employees.stream()
.map(employee -> employee.getEmail())
.collect(Collectors.toList());
}
// 직원 급여 합계 계산 - 모든 직원의 급여 합계를 계산하여 반환하는 메소드를 작성하세요.
public double getTotalSalary(List<Employee> employees) {
return employees.stream()
.mapToDouble(Employee::getSalary)
.sum();
}
// 특정 급여 이상의 직원 필터링 - 특정 급여(salary) 이상을 받는 직원들을 필터링하여 반환하는 메소드를 작성하세요.
public List<Employee> filterBySalary(List<Employee> employees, double salary) {
return employees.stream()
.filter(employee -> employee.getSalary() >= salary)
.collect(Collectors.toList());
}
// // 부서별 평균 급여 계산 - 각 부서별로 평균 급여를 계산하여 맵 형태로 반환하는 메소드를 작성하세요. 부서 이름을 키로 하고 평균
// 급여를 값으로 하는 맵을 반환하세요.
public Map<String, Double> getAverageSalaryByDepartment(List<Employee> employees) {
return employees.stream()
.collect(Collectors.groupingBy(
Employee :: getDepartment, // e -> e.getDepartment()
Collectors.averagingDouble(Employee :: getSalary))); // e -> e.getSalary()
}
// // 직원 이름 정렬 - 직원들의 이름을 알파벳 순서로 정렬하여 반환하는 메소드를 작성하세요.
public List<Employee> sortEmployeesByName(List<Employee> employees) {
return employees.stream()
.sorted((emp1, emp2) -> emp1.getName().compareTo(emp2.getName()))
.toList();
}
// // 직원 ID로 직원 찾기 - 직원 ID로 특정 직원을 찾아 반환하는 메소드를 작성하세요. 직원이 존재하지 않으면
// Optional.empty()를 반환하세요.
public Optional<Employee> findEmployeeById(List<Employee> employees, int id) {
return employees.stream()
.filter(employee -> employee.getId() == id)
.findFirst();
}
}
Java
복사
•
EmployeeExample.java
package com.assignment;
import java.util.Arrays;
import java.util.List;
public class EmployeeExample {
public static void main(String[] args) {
List<Employee> employees = Arrays.asList(
// 심유경, 유선웅, 설경하, 성인옥, 허형민
new Employee(1, "심유경", "Engineering", 75000, "sim@example.com"),
new Employee(2, "유선웅", "Marketing", 60000, "ysw@example.com"),
new Employee(3, "설경하", "Engineering", 80000, "snow@example.com"),
new Employee(4, "성인옥", "Sales", 55000, "inok@example.com"),
new Employee(5, "허형민", "Marketing", 70000, "hhhhhm@example.com")
);
EMSystem system = new EMSystem();
System.out.println("부서별 필터링 (Engineering):");
system.filterByDepartment(employees, "Engineering").forEach(System.out::println);
System.out.println("\n이메일 주소:");
system.getEmailAddresses(employees).forEach(System.out::println);
System.out.println("\n총 급여:");
System.out.println(system.getTotalSalary(employees));
System.out.println("\n급여 필터링 (>= 70000):");
system.filterBySalary(employees, 70000).forEach(System.out::println);
System.out.println("\n부서별 평균 급여:");
system.getAverageSalaryByDepartment(employees).forEach((dept, avgSalary) ->
System.out.println(dept + ": " + avgSalary)
);
System.out.println("\n직원명 정렬:");
system.sortEmployeesByName(employees).forEach(System.out::println);
System.out.println("\nID로 찾기:");
system.findEmployeeById(employees, 3).ifPresent(System.out::println);
}
}
Java
복사