gpt4 book ai didi

java - 分组和计数比较两个对象数组Java

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:09:40 24 4
gpt4 key购买 nike

我有 3 个类:AgencyTeamAgentAgent 属于 Team,而 Team 又属于 Agency

我需要做一份报告,统计我在每个 Agency 上有多少代理人。我没有数据库,只有包含以下数据的 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 获得代理,因为我需要 getTeam().getAgency() 而此 map 不允许我这样做。

总结:

我有代理:A、B、C。

我有代理人:X 与代理机构 A 相关,Y 与代理机构 A 相关,Z 与代理机构 B 相关。

我需要显示:代理机构 A:2 个代理人/代理机构 B:1 个代理人/代理机构 C:0 个

有人可以帮帮我吗?

最佳答案

你很接近。在这种情况下,您应该使用 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()));

关于java - 分组和计数比较两个对象数组Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47556118/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com