首页 > 解决方案 > 从对象的特定属性中组合多个值

问题描述

我在这里有点怀疑。

我有一个特定对象的列表,并且想对类似的数据进行分组。

目前我的代码片段如下所示:

重要 -> 这是我的填充列表PreencherDados.listarAlunos()

    Map<String, Map<Integer, List<Aluno>>> map = PreencherDados.listarAlunos()
            .stream().collect(
                    Collectors.groupingBy(Aluno::getNome,
                            Collectors.groupingBy(Aluno::getBimestre))
            );

    for (Map.Entry<String, Map<Integer, List<Aluno>>> entry : map.entrySet()) {
        System.out.println(" NOME: " + entry.getKey() + " || BIMESTRE: " + entry.getValue());
    }

这是当前的结果:

名称:乔奥|| BIMESTRE: {1=[entidade.Aluno@50], 2=[entidade.Aluno@24, entidade.Aluno@44], 3=[entidade.Aluno@2f, entidade.Aluno@476, entidade.Aluno@476, entidade.Aluno@476], 4=[entidade.Aluno@22, entidade.Aluno@32]}

名称:全日空 || BIMESTRE: {1=[entidade.Aluno@9a], 2=[entidade.Aluno@c7], 3=[entidade.Aluno@45, entidade.Aluno@246, entidade.Aluno@4f]}

名称:佩德罗 || BIMESTRE: {1=[entidade.Aluno@21, entidade.Aluno@18d], 2=[entidade.Aluno@23, entidade.Aluno@5a, entidade.Aluno@68, entidade.Aluno@48, entidade.Aluno@ ac], 3=[entidade.Aluno@26, entidade.Aluno@476], 4=[entidade.Aluno@5c, entidade.Aluno@df]}

名称:玛丽亚 || BIMESTRE: {3=[entidade.Aluno@20, entidade.Aluno@476, entidade.Aluno@476, entidade.Aluno@476], 4=[entidade.Aluno@25, entidade.Aluno@2b, entidade.Aluno@ 7a, entidade.Aluno@ca]}

我想得到的结果是:

名称:乔奥|| 比梅斯特:1=1、2=2、3=4、4=2

名称:全日空 || 比梅斯特:1=1, 2=1, 3=3

名称:佩德罗 || 比梅斯特:1=2、2=5、3=2、4=2

名称:玛丽亚 || 比梅斯特:3=4, 4=4

如果您仔细观察,我想将列表中的对象转换为它们自身的总和。

我不知道我是否做得对,所以我希望你的帮助!非常感谢

标签: javalambdajava-8

解决方案


System.out.println(" NOME: " + entry.getKey() + " || BIMESTRE: " +
                    entry.getValue().entrySet().stream().map( e -> e.getKey() + "=" + e.getValue().size() ).collect(
                            Collectors.joining(",")));

推荐阅读