gpt4 book ai didi

java - 使用 Java 聚合两个层次树的笛卡尔积

转载 作者:行者123 更新时间:2023-12-01 12:02:29 25 4
gpt4 key购买 nike

需要使用Java对两个层次树结构的笛卡尔积进行聚合,请建议一些好的方法或API来完成此操作。

树结构:

乡村树:

节点|Id|ParentId

世界|1|1
亚洲|2|1
欧洲|3|1
印度|4|2
中国|5|2
英国|6|3
匈牙利|7|3
塞浦路斯|8|3

利润树:

节点|Id|ParentId
利润|1|1
收入|2|1
费用|3|1

这两个产品的笛卡尔积会给我 24 种组合 (8 X 3)。我需要汇总每个组合的值。

例如,我想知道欧洲、亚洲和世界的总收入、欧洲的总利润等

最佳答案

如果没有详细的结构,很难回答。但我会猜测它们可能是什么,您可以推断出您的结构。

enum EconomicDataType {
PROFIT, REVENUE, EXPENSE;
}

interface GeographicNode {
int getEconomicData(EconomicDataType type);
}

class Region implements GeographicNode {
private List<GeographicNode> geographiesInRegion;
public int getEconomicData(EconomicDataType type) {
return geographiesInRegion.stream()
.mapToInt(geog -> geog.getEconomicData(type))
.sum();
}
}

class Country implements GeographicNode {
private EnumMap<GeographicNode, Integer> economicData;
public int getEconomicData(EconomicDataType type) {
return economicData.get(type);
}
}

我将经济数据建模为 map 而不是树,因为坦率地说,鉴于数据没有任何层次结构,将其设为层次结构对我来说没有任何意义。

我也没有处理过数据丢失的情况。在从 map 获取数据之前添加 containsKey 检查并不难。

检索欧洲总收入之类的数据是:

europe.getEconomicData(EconomicDataType.REVENUE);

简单:-)

关于java - 使用 Java 聚合两个层次树的笛卡尔积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27893810/

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