设为首页 加入收藏

TOP

Stream流体系(二)
2023-07-25 21:22:38 】 浏览:76
Tags:Stream
quot;)); one.add(new Employee("沙僧",'男',2000,20000,null)); one.add(new Employee("小白龙",'男',20000,25000,null)); List<Employee> two = new ArrayList<>(); two.add(new Employee("武松",'男',15000,9000,null)); two.add(new Employee("李逵",'男',25000,10000,null)); two.add(new Employee("西门庆",'男',50000,10000,"迟到")); two.add(new Employee("潘金莲",'女',3500,1000,"打人")); two.add(new Employee("武大郎",'女',20000,0,"偷窃"));
  1. 筛选两个部门的最高工资的员工信息。
    新建一个对象Topperformer
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Topperformer {
    private String name;
    private double money;//月薪
}
// 1、开发1部的最高工资的员工
//指定大小规则
Topperformer t = one.stream().max((e1, e2) -> Double.compare(e1.getSalary() + e1.getBonus(), e2.getSalary() + e2.getBonus()))
		.map(e -> new Topperformer(e.getName(), e.getSalary() + e.getBonus())).get();
// 2、开发2部的最高工资信息
// 1)先用max定义规则,比较大小;2)用map进行加工
Topperformer t2 = two.stream().max((e1, e2) -> Double.compare(e1.getSalary() + e1.getBonus(), e2.getSalary() + e2.getBonus()))
		.map(e -> new Topperformer(e.getName(), e.getSalary() + e.getBonus())).get();
  1. 统计2个部门的平均月收入,去掉最高工资和最低工资。
//开发1部
one.stream().sorted((e1, e2) -> Double.compare(e1.getSalary() + e1.getBonus(), e2.getSalary() + e2.getBonus())).
		skip(1).limit(one.size()-2).forEach(e->{
			//求出总和:剩余员工的工资总和
			allMoney += e.getBonus()+e.getSalary();
		});
System.out.println("开发1部的平均工资是" +allMoney/(one.size()-2));
//开发2部
two.stream().sorted((e1,e2)->Double.compare(e1.getSalary()+e1.getBonus(),e2.getSalary()+e2.getBonus()))
		.skip(1).limit(two.size()-2).forEach(employee -> {
			allMoney2 += employee.getSalary()+employee.getBonus();
		});
System.out.println("开发2的平均月收入是"+allMoney2);
  1. 统计两个部门的整体平均工资
Stream<Employee> s1 = one.stream();
Stream<Employee> s2 = two.stream();
Stream<Employee> s3 = Stream.concat(s1, s2);
s3.sorted((e1, e2) -> Double.compare(e1.getSalary() + e1.getBonus(), e2.getSalary() + e2.getBonus()))
		.skip(1).limit(one.size()+two.size()-2).forEach(e ->{
		allMoney3 += e.getSalary()+e.getBonus();
		});
BigDecimal a = BigDecimal.valueOf(allMoney3);
BigDecimal b = BigDecimal.valueOf(one.size()+ two.size()-2);
System.out.println("2个部门的整体平均工资是" +a.divide(b,2, RoundingMode.HALF_UP));

整体代码:

package stream_test;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;

public class StreamDemo1 {
    public static  double allMoney;
    public static  double allMoney2;
    public static  double allMoney3;
    public static void main(String[] args) {
        List<Employee> one = new ArrayList<>();
        one.add(new Employee("猪八戒",'男',30000,25000,null));
        one.add(new Employee("孙悟空",'男',25000,1000,"迟到"));
        one.add(new Employee("沙僧",'男',2000,20000,null));
        one.add(new Employee("小白龙",'男',20000,25000,null));

        List<Employee> two = new ArrayList<>();
        two.add(n
首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇如何用chatGPT快速开发java后端功.. 下一篇如何通过Java代码将 PDF文档转为 ..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目