building/demolition 历史的数据结构

Data Structure for building/demolition history

这是问题所在: 我必须创建一个模拟城市的程序,特别是它的建筑物,以确定其天际线的平均高度和其他值。我的问题是选择数据结构:我需要一些东西来计算不同年份的这个值:例如,用户可以要求 2016 年的天际线值,然后要求 2020 年的最高建筑物。

每个建筑物都有一个字符串作为密钥,但是一旦它们被拆除,相同的密钥又可用。

这是一个大学项目,所以我只是想问点小费;我需要比 "how".

了解更多 "what" 和 "why"

我用Java.

谢谢。

您正在寻找某种多级词典的地图。 您可以有一个 2 级字典,例如 { 2018:{height1, height2}, 2002:{} ... } 其中每个内部词典都是当年所有建筑物的高度(这是关键)。此外,字典速度很快(尽管您正在用性能换 space)。

希望对您有所帮助!

如果建筑钥匙是唯一的,你会得到这样的 class:

class Building
    Key
    Name
    Height
    YearBuilt
    YearDemolished

您可以通过对建筑物集合进行简单循环来解决您的问题:

for each building
    if (building.yearBuilt <= year && building.yearDemolished >= year)
    {
        // the building was standing during that year
    }

如果密钥可以重复使用,您仍然需要保留历史信息。如果你把它和建筑物放在一起,那么你就会得到类似的东西:

class HistoricalInfo
    Name
    Height
    YearBuilt
    YearDemolished

class Building
    Key
    HistoricalInfo[]  // some collection (array, list, etc.)

你的循环变得有点复杂:

for each building
    for each building.historyInfo
        if (historyInfo.YearBuilt <= year && historyInfo.YearDemolished >= year)
        {
            // this instance of the key was standing during that year
        }