寻找最顶级的父母

时间:2015-05-08 17:47:11

标签: java inheritance

我的代码如下:

class GlobalInfo {
     // multiple properties here
}

class RegionalInfo extends GlobalInfo {
    // multiple properties here
    GlobalInfo parent;
}

class BankInfo extends GlobalInfo {
    // multiple properties here
    GlobalInfo parent;
}

一个RegionalInfo中可能有多个BankInfo。 BankInfo对象中可能有多个RegionalInfo父级。

例如,

BankInfo == Bank Of America

RegionalInfo == Dallas // 1st parent

RegionalInfo == Texas // Dallas's parent

RegionalInfo == MidWest // Texas's parent and final parent.

在上面的示例中,BankInfo对象的直接父级指向达拉斯,它的父级指向德克萨斯州,然后它的父级指向MidWest。

在某些情况下,可能只有一两个父母

例如,

BankInfo == University Credit Union

RegionalInfo == Houston

所以我想找到的是每个BankInfo对象的根父级。从第一个例子开始,这将是MidWest,在第二个例子中,它将是休斯顿。

我更像是一名C ++开发人员,可能会想出一个具有多个循环的代码来查找根父母。但我希望在Java中可能有更好的方法。

欢迎任何帮助!

2 个答案:

答案 0 :(得分:1)

如果将父属性移动到GlobalInfo中,则可以使用递归循环执行此操作。

public GlobalInfo getTopParent() {
   GlobalInfo result = this;
   if (this.parent != null) {
      result = this.parent.getTopParent();
   }
   return result;
}

只要你有父母,你就会继续上去。

答案 1 :(得分:1)

parent移至GlobalInfo

class GlobalInfo {
    GlobalInfo parent;
    // multiple properties here
}

然后你可以进行while循环:

public GlobalInfo getRootParent(){
    if(this.parent == null){
        return null;
    }

    GlobalInfo result = this;
    while(result.parent != null){
        result = result.parent;
    }

    return result;
}