Java更新列表中的所有子节点



那么假设我有一个相互相关的人员列表,每个人都包含自己的家谱。

public class Person {
  private int id;
  private String name;
  private List<Integer> ancestorIds;
  private int parentId;
  //getters and setters
}

那么假设我有如下列表:

List<Person> persons = new ArrayList<Person>();
persons.add(new Person(3,"grandpa", {}, null));
persons.add(new Person(4,"pa", {3,4},3));
persons.add(new Person(5,"uncle", {3,5},3));
persons.add(new Person(7,"me", {3,4,7},4));

但是现在我们知道我的爷爷他的父亲实际上是id 1..我需要更新列表…我怎么能做到这一点,记住我需要逐行更新它。首先我爷爷…然后把他的祖先名单给我爸爸和叔叔(也加上他们的id)。然后我把我爸爸的名单加上我。我想我需要一些递归方法来解决这个问题。

Thanks in advance

如果您对这个数据结构进行更改,如果您让每个人只指向它的直接祖先,则会更灵活。然后根据需要构建树。如果树不被改变,我将使用你在问题中提到的方式。

您是否被迫使用这种表示?让家谱树引用Persons更有意义,特别是将Person类定义为:

public class Person {
      private int id;
      private String name;
      private List<Person> ancestors;
      private int parentId;
      //getters and setters
    }

如果这样做,你不需要更新任何东西,除了你的曾祖父。事实上,逐行执行并不是一个可靠的解决方案,因为存在出错的可能性(如果您遗漏了单个ID),为了实现良好的设计,您应该避免这种情况。更糟糕的是,除非你保留反向指针(即既有祖先也有后代),否则没有有效的方法来更新树中的祖先。

相关内容

  • 没有找到相关文章

最新更新