如何在Java中创建/遍历具有复杂结构的多维arraylist?

如何在Java中创建/遍历具有复杂结构的多维arraylist?,java,arraylist,Java,Arraylist,我想知道如何创建一个结构来保存以下格式的三个列表: [x],[y],[z]] 其中x,y,z是三个字符串列表 请注意,我希望第三层的x和y列表向下,第二层的z列表向下 我尝试为x、y和z创建3个单独的arraylist,然后创建另一个保存x和y的arraylist。当我试图创建最外层的arraylist来容纳这三个元素时,问题就出现了,因为 ArrayList<ArrayList<ArrayList<String>>> outerList = new Arra

我想知道如何创建一个结构来保存以下格式的三个列表:

[x],[y],[z]]

其中x,y,z是三个字符串列表

请注意,我希望第三层的x和y列表向下,第二层的z列表向下

我尝试为x、y和z创建3个单独的arraylist,然后创建另一个保存x和y的arraylist。当我试图创建最外层的arraylist来容纳这三个元素时,问题就出现了,因为

ArrayList<ArrayList<ArrayList<String>>> outerList = new ArrayList<ArrayList<ArrayList<String>>>();
ArrayList outerList=new ArrayList();
将适用于x和y,但不适用于z,因为z仅向下2级

我知道我想做的更像一棵树,但我不知道如何在java中实现一棵非二叉树(x,y,z有两个以上的分支)

我试图从中得到的是一种分配权重的方法,例如,用户输入一个术语,我首先迭代所有子节点(x,y,z)并尝试找到它。如果我找到它,我会分配一个高权重,否则我会尝试在父节点(包含x,y的列表)中找到它并给它一个中等权重,否则我会在根节点中搜索并分配一个最小权重。所描述的结构只是我所分类的术语之间的关系


有什么办法吗?

这就是物体的力量所在。您可以创建一个包含xs和ys列表的类,然后创建另一个包含该类列表以及xs列表的类。最后,您将得到这些类的列表

如果你想聪明一点,试着从ArrayList继承并重写或重载它的方法来完成你需要的事情


您还提到了以树的方式进行此操作。要做到这一点,这里有一些很好的建议:

结构很容易制作,但是使用它会非常难看,因为你不知道它有多深。如果这是一个集合结构,其中只有x、y和z,那么应该创建一个自定义对象来处理该已知结构。如果您在运行时之前不知道结构,那么您需要这样的东西

请注意,虽然此结构确实符合您的要求,但除非您必须这样做,否则我不建议您使用它。寻找替代品。您提到了一个树,但从您的结构来看,这将是一个只在叶节点上包含数据的树,因此在实现它时请记住这一点

public void useArrayList()
{
    ArrayList<ArrayList<?>> weirdStructure = new ArrayList<ArrayList<?>>();
    ArrayList<String> x = new ArrayList<String>();
    ArrayList<String> y = new ArrayList<String>();
    ArrayList<String> z = new ArrayList<String>();          
    ArrayList<ArrayList<String>> xy = new ArrayList<ArrayList<String>>(); 
    xy.add(x);
    xy.add(y);
    weirdStructure.add(xy);     
    weirdStructure.add(z);

}
public void useArrayList()
{
ArrayList>();
ArrayList x=新的ArrayList();
ArrayList y=新的ArrayList();
ArrayList z=新的ArrayList();
ArrayList xy=新的ArrayList();
xy.加上(x);
xy.添加(y);
古怪的结构。添加(xy);
古怪的结构。添加(z);
}