栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

利用JAVA流处理-统计男员工人数;找出所有薪资大于 5000 元的女员工;找出大于平均年龄的员工

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

利用JAVA流处理-统计男员工人数;找出所有薪资大于 5000 元的女员工;找出大于平均年龄的员工

创建一个Employee JAVABean对象

package ght04_Stream;
import java.util.ArrayList;
import java.util.List;

public class Employee { // 员工类
	private String name; // 姓名
	private int age; // 年龄
	private double salary; // 工资
	private String sex; // 性别
	private String dept; // 部门

	// 构造方法
	public Employee(String name, int age, double salary, String sex, String dept) {
		this.name = name;
		this.age = age;
		this.salary = salary;
		this.sex = sex;
		this.dept = dept;
	}

	// 重写此方法,方便打印输出员工信息
	public String toString() {
		return "name=" + name + ", age=" + age + ", salary=" + salary + ", sex=" + sex + ", dept=" + dept;
	}

	// 以下是员工属性的getter方法
	public String getName() {
		return name;
	}

	public int getAge() {
		return age;
	}

	public double getSalary() {
		return salary;
	}

	public String getSex() {
		return sex;
	}

	public String getDept() {
		return dept;
	}

	static List getEmpList() { // 提供数据初始化方法
		List list = new ArrayList();
		// 添加员工数据
		list.add(new Employee("老张", 40, 9000, "男", "运营部"));
		list.add(new Employee("小刘", 24, 5000, "女", "开发部"));
		list.add(new Employee("大刚", 32, 7500, "男", "销售部"));
		list.add(new Employee("翠花", 28, 5500, "女", "销售部"));
		list.add(new Employee("小马", 21, 3000, "男", "开发部"));
		list.add(new Employee("老王", 35, 6000, "女", "人事部"));
		list.add(new Employee("小王", 21, 3000, "女", "人事部"));
		return list;
	}
}

利用JAVA流处理Stream测试数据

package ght04_Stream;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class test {
    public static void main(String[] args) {
        List list = Employee.getEmpList();    //get test data from public class
        Stream stream = list.stream();    //get stream object

        // 分组规则方法,按照员工进行分级(sex)
        Function f = Employee::getSex;
        // 按照部门分成若干List集合,集合中保存员工对象,返回成Map
        Map> map = stream.collect(Collectors.groupingBy(f));
        Set keySet = map.keySet(); // 获取Map的 all sex

        int age = 0;    //年龄总和
        double avg_age = 0.0;
        for ( Employee e : list ){
             age += e.getAge();
        }
        avg_age = age/list.size();

        int num = 0;
        int salary = 5000;
        int s_num = 0;
        int a_num = 0;
        Listemployees = new ArrayList<>();

        for (String sex : keySet) { // 遍历部门名称集合
            // find sex
            if(sex == "男"){
                List deptList = map.get(sex); // 获取sex == "男"
                System.out.println("男员工人数为: "+deptList.size());
                for(Employee e : deptList){
                    if(e.getAge() > avg_age){
                        employees.add(e);
                    }
                }

            }else{
                List deptList = map.get(sex); // 获取sex == " 女"
                for(Employee d : deptList){
                    if(d.getSalary() > 5000){
                        s_num++;
                    }
                    if( d.getAge() > avg_age){
                        employees.add(d);
                    }
                }
                System.out.println("薪资大于5000的女员工人数为: "+s_num);
            }
        }
        System.out.println("大于平均年龄的员工: ");
        for (Employee emp : employees) { // 遍历员工集合
            System.out.println("t" + emp); // 输出员工信息
        }

    }
}

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/837291.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号