我有3个课程:Agency
,Team
和Agent
。 Agent
属于属于Team
的{{1}}。
我需要做一个报告,计算每个Agency
上有多少代理人。
我没有数据库,只有Agency
s,包含以下数据:
ArrayList
在List<Agent> agents
List<Team> teams
List<Agency> agencies
班级,我有Agent
,其中getTeam()
(来自getAgency()
班级。)
我试图这样做:
Team
但我不知道如何将每个for (Agency ag : agencies) {
for (Agent a : agents) {
if (a.getTeam() != null) {
if (a.getTeam().getAgency() == ag) {
teste = "Agency from agent" + a.getTeam().getAgency().getCode() + "Agency from agency" + ag.getCode();
}
}
}
}
分开计算。
所以我试过了:
Agency
但是我无法从Map<String, Long> agentsAtAgency =
agents.stream()
.collect(Collectors.groupingBy(Agent::getTeam, Collectors.counting()));
获取该代理商,因为我需要Agent
而且此地图不允许我这样做。
汇总:
我有代理:A,B,C。
我有代理人:X代理A,Y代理A代理,Z代理B代理。
我需要证明:代理A:2个代理/代理B:1代理/代理C:0
有人可以帮助我吗?
答案 0 :(得分:2)
你很亲密。在这种情况下,您应该使用lambda表达式而不是方法引用。
这样您就可以按a -> a.getTeam().getAgency()
(或Agency
String
类型的某个属性进行分组,因为您的输出为Map<String, Long>
}:
Map<String, Long> agentsAtAgency =
agents.stream()
.filter(a -> a.getTeam() != null)
.collect(Collectors.groupingBy(a -> a.getTeam().getAgency().getName(),
Collectors.counting()));