2 List分组(group)

作者: 笑Skr人啊 | 来源:发表于2019-11-13 16:09 被阅读0次
package com.gp6.list.group;

import com.gp6.bean.Employee;
import com.gp6.list.utils.ListUtil;

import java.lang.reflect.InvocationTargetException;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * 测试list分组
 *
 * @author gp6
 * @date 2019-07-23
 */
public class TestGroup {
    public static void main(String[] args) {
        List<Employee> employeeList = ListUtil.packEmployeeList();

        // 根据 年龄 分组
        Map<Object, List<Employee>> ageMap = employeeList.stream().collect(Collectors.groupingBy(Employee::getAge));
        ageMap.forEach((age, list) -> {

        });

        // 先根据 性别 分组,再根据 年龄 分组
        Map<Integer, Map<Integer, List<Employee>>> sexAgeMap = employeeList.stream().collect(Collectors.groupingBy(Employee::getSex, Collectors.groupingBy(Employee::getAge)));
        sexAgeMap.forEach((sex, ageTmpMap) -> ageTmpMap.forEach((age, list) -> {

        }));


        // 根据  传入参数  进行分组
        Map<String, List<Employee>> sexMap = employeeList.stream().collect(Collectors.groupingBy(e -> groupKey(e, "sex")));
        sexMap.forEach((sex, list) -> {

        });
    }

    /**
     * list分组传参使用
     *
     * @param clazz      实体类
     * @param columnName 字段名
     * @param <T>        泛型
     * @return 指定字段值
     */
    private static <T> String groupKey(T clazz, String columnName) {
        try {
            // 获取指定字段的方法名
            String methodName = "get" + columnName.substring(0, 1).toUpperCase() + columnName.substring(1);
            // 获取指定字段的值
            Object value = clazz.getClass().getMethod(methodName).invoke(clazz);
            if (null != value) {
                return value.toString();
            }
        } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
            e.printStackTrace();
        }
        return "";
    }
}

相关文章

  • 2 List分组(group)

  • dataframe小技巧

    group_by_type_x=lastdata.groupby('col') 分组 a=(list(frame[...

  • 2019-11-23_单表查询_分组

    说到分组查询,当然想到的是group by,根据字面group就明白是分组的意思,group by后面加分组条件,...

  • (三)02_group_ids分组和芯片注释

    group_list分组 第一步:清除之前所有变量+加载之前的数据 第二步,确认分组的目标 第三步,分组向量生成 ...

  • group by问题

    错误:Expression #2 of SELECT list is not in GROUP BY clause...

  • mysql小书---分组和函数

    分组--group by 简单--select 字段 from 表 group by 字段 加分组函数--...

  • MySQL 基础语法

    分组数据 数据分组 分组是在SELECT语句的GROUP BY子句中建立的。 GROUP BY子句可以包含任意数目...

  • codis 使用配置

    1、加入proxy,默认是为空,填写后,点击New Proxy即可 2、新建分组group-1,group-2,g...

  • mysql_group by

    group by使用了group by 分组,写法:select 分组的字段, 聚合行数 from 表 g...

  • 24《MySQL 教程》 GROUP BY分组

    本小节介绍如何对查询结果使用 GROUP BY 分组,GROUP BY 分组是对指定一个或多个字段分组,使用分组可...

网友评论

    本文标题:2 List分组(group)

    本文链接:https://www.haomeiwen.com/subject/tuxkictx.html