英文:
Group more than one value from specific attributes of an object
问题
这是我现在的代码片段:
Map<String, Map<Integer, Integer>> map = PreencherDados.listarAlunos()
.stream()
.collect(Collectors.groupingBy(
Aluno::getNome,
Collectors.groupingBy(
Aluno::getBimestre,
Collectors.summingInt(aluno -> 1)
)
));
for (Map.Entry<String, Map<Integer, Integer>> entry : map.entrySet()) {
System.out.print("NOME: " + entry.getKey() + " || BIMESTRE: ");
entry.getValue().forEach((bimestre, count) -> {
System.out.print(bimestre + "=" + count + ", ");
});
System.out.println();
}
这是期望得到的结果:
NOME: JOAO || BIMESTRE: 1=1, 2=2, 3=4, 4=2
NOME: ANA || BIMESTRE: 1=1, 2=1, 3=3
NOME: PEDRO || BIMESTRE: 1=2, 2=5, 3=2, 4=2
NOME: MARIA || BIMESTRE: 3=4, 4=4
如果仔细观察,我希望将列表中的对象转换为它们自身的总和。如果有任何问题,请随时询问!非常感谢。
英文:
I have a little doubt here.
I have a list of a specific object and would like to group the similar data.
Currently my code snippet looks like this:
Important -> This is my populated list 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());
}
This is the current result:
NOME: JOAO || 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]}
NOME: ANA || BIMESTRE: {1=[entidade.Aluno@9a], 2=[entidade.Aluno@c7], 3=[entidade.Aluno@45, entidade.Aluno@246, entidade.Aluno@4f]}
NOME: PEDRO || 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]}
NOME: MARIA || 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]}
The result I would like to get is:
NOME: JOAO || BIMESTRE: 1=1, 2=2, 3=4, 4=2
NOME: ANA || BIMESTRE: 1=1, 2=1, 3=3
NOME: PEDRO || BIMESTRE: 1=2, 2=5, 3=2, 4=2
NOME: MARIA || BIMESTRE: 3=4, 4=4
If you look closely, I would like to transform the objects on the list into a sum of themselves.
I don't know if I'm doing it right, so I would like your help! Thank you very much
答案1
得分: 0
System.out.println(" NOME: " + entry.getKey() + " || BIMESTRE: " +
entry.getValue().entrySet().stream().map( e -> e.getKey() + "=" + e.getValue().size() ).collect(
Collectors.joining(",")));
英文:
System.out.println(" NOME: " + entry.getKey() + " || BIMESTRE: " +
entry.getValue().entrySet().stream().map( e -> e.getKey() + "=" + e.getValue().size() ).collect(
Collectors.joining(",")));
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论