Java语言完成Stream综合案例:某公司的开发部门分为开发一部和开发二部现在需要进行年中数据结算。
假设每个部门的员工数据如下:
开发一部:
- 员工1: 姓名-张三,月薪-10000,奖金-5000
- 员工2: 姓名-李四,月薪-8000,奖金-3000
- 员工3: 姓名-王五,月薪-12000,奖金-6000
开发二部:
- 员工4: 姓名-赵六,月薪-9000,奖金-4000
- 员工5: 姓名-钱七,月薪-11000,奖金-5500
- 员工6: 姓名-孙八,月薪-7500,奖金-2500
现在需要完成以下任务:
- 计算开发一部和开发二部的员工人数。
- 计算开发一部和开发二部的员工月薪总和。
- 计算开发一部和开发二部的员工奖金总和。
- 计算开发一部和开发二部的员工平均月薪。
- 找出开发一部和开发二部的员工中的最高月薪。
下面是使用Java Stream完成上述任务的代码:
import java.util.Arrays;
import java.util.List;
class Employee {
private String name;
private int salary;
private int bonus;
public Employee(String name, int salary, int bonus) {
this.name = name;
this.salary = salary;
this.bonus = bonus;
}
public String getName() {
return name;
}
public int getSalary() {
return salary;
}
public int getBonus() {
return bonus;
}
}
public class Main {
public static void main(String[] args) {
// 创建员工列表
List<Employee> department1 = Arrays.asList(
new Employee("张三", 10000, 5000),
new Employee("李四", 8000, 3000),
new Employee("王五", 12000, 6000)
);
List<Employee> department2 = Arrays.asList(
new Employee("赵六", 9000, 4000),
new Employee("钱七", 11000, 5500),
new Employee("孙八", 7500, 2500)
);
// 计算员工人数
long count1 = department1.stream().count();
long count2 = department2.stream().count();
System.out.println("开发一部员工人数: " + count1);
System.out.println("开发二部员工人数: " + count2);
// 计算员工月薪总和
int totalSalary1 = department1.stream().mapToInt(Employee::getSalary).sum();
int totalSalary2 = department2.stream().mapToInt(Employee::getSalary).sum();
System.out.println("开发一部员工月薪总和: " + totalSalary1);
System.out.println("开发二部员工月薪总和: " + totalSalary2);
// 计算员工奖金总和
int totalBonus1 = department1.stream().mapToInt(Employee::getBonus).sum();
int totalBonus2 = department2.stream().mapToInt(Employee::getBonus).sum();
System.out.println("开发一部员工奖金总和: " + totalBonus1);
System.out.println("开发二部员工奖金总和: " + totalBonus2);
// 计算员工平均月薪
double averageSalary1 = department1.stream().mapToInt(Employee::getSalary).average().orElse(0);
double averageSalary2 = department2.stream().mapToInt(Employee::getSalary).average().orElse(0);
System.out.println("开发一部员工平均月薪: " + averageSalary1);
System.out.println("开发二部员工平均月薪: " + averageSalary2);
// 找出最高月薪
int maxSalary1 = department1.stream().mapToInt(Employee::getSalary).max().orElse(0);
int maxSalary2 = department2.stream().mapToInt(Employee::getSalary).max().orElse(0);
System.out.println("开发一部员工最高月薪: " + maxSalary1);
System.out.println("开发二部员工最高月薪: " + maxSalary2);
}
}
运行上述代码,将输出以下结果:
开发一部员工人数: 3
开发二部员工人数: 3
开发一部员工月薪总和: 30000
开发二部员工月薪总和: 27500
开发一部员工奖金总和: 14000
开发二部员工奖金总和: 12000
开发一部员工平均月薪: 10000.0
开发二部员工平均月薪: 9166.666666666666
开发一部员工最高月薪: 12000
开发二部员工最高月薪: 11000
``
原文地址: https://www.cveoy.top/t/topic/hF6Y 著作权归作者所有。请勿转载和采集!