多维Arraylist Java

多维Arraylist Java,java,arraylist,multidimensional-array,Java,Arraylist,Multidimensional Array,我在实现这一点时遇到了一些问题。我有一个ArrayList。我已经找了几天了,但似乎在任何地方都找不到答案: private List<FamilyTree> Tree; 我基本上希望能够在几代人之间移动。例如,我向树中添加了一个新的人 Generation.add(new Person(height, hair colour, eyes)); 然后我决定,我想在上一代人中再添一个人。即指向包含当前Arraylist的Arraylist(不是这个) 我不确定我是否能很好地解释我的

我在实现这一点时遇到了一些问题。我有一个
ArrayList
。我已经找了几天了,但似乎在任何地方都找不到答案:

private List<FamilyTree> Tree;
我基本上希望能够在几代人之间移动。例如,我向树中添加了一个新的人

Generation.add(new Person(height, hair colour, eyes));
然后我决定,我想在上一代人中再添一个人。即指向包含当前
Arraylist
Arraylist
(不是这个)

我不确定我是否能很好地解释我的问题,因此下面是一张图表:

----John----Peter----Sandra----Rachel-----
   /   \       |       |
-Jon--Sunny---Cassie--Milo---
                     /  |  \
                   Ron-Kim-Guy
所以基本上,有一个约翰、彼得、桑德拉和瑞秋的初始
ArrayList
。每个都有自己的
阵列列表
。假设我想从Guy添加到Rachel,我将如何在单独的数组之间来回移动


提前感谢

您不需要多维列表,只需要一棵树。有关树的实现,请参见

多维列表是例如表格、长方体等。维度必须在开始时已知,并定义数据的结构


树有根节点和子节点,这些子节点可以在运行时获得更多子节点,因此没有限制。

如果每个人都有两个父节点和任意数量的子节点,则可以使用如下结构

class Person {
   final Person mother, father;
   final List<Person> children = new ArrayList<>();

   public Person(Person mother, Person father) {
     this.mother = mother;
     this.father = father;
     mother.addChild(this);
     father.addChild(this);
   }

   public void addChild(Person p) {
     children.add(p);
   }
}

与其考虑如何显示树,不如考虑如何表示树。

最简单的方法是每个列表都有一个对其父列表的引用。 如果您创建一个类似于以下内容的对象:

public class Person{

ArrayList<Person> childs;//the child's nods
Person parent; //the parent, null if is the root

}
公共类人物{
ArrayList childs;//孩子的点头
Person parent;//父项,如果是根,则为null
}

您的问题一点也不清楚,也没有显示任何有意义的代码。但我觉得你只需要
rootPersons.remove(瑞秋);盖伊·阿德奇尔德(雷切尔)。请遵守Java命名约定:变量以小写字母开头。
for(Person p = ...; p != null; p = p.mother) {

}
public class Person{

ArrayList<Person> childs;//the child's nods
Person parent; //the parent, null if is the root

}