复合模式遍历向父项添加叶和组件

时间:2015-10-25 01:27:05

标签: java design-patterns file-io tree composite

所以我有一个我正在阅读的文件,它的格式 组件可以具有任意数量的子组件和叶子。

comp1 : data
comp1 childs : comp2, comp3, comp4
comp2 : Data
comp2 childs : leaf 1, comp5
leaf 1 :data
comp5 : data
comp5 childs: leaf2:
Leaf2 : data
comp3 :data
comp4 :data

将子节点添加到父节点的最简单方法是什么?我的大脑是油炸的,无法解释这一点。请帮忙,我使用复合模式,comp(osite)实现组件和leaf实现组件。我的comp课有一个Arraylist来容纳它的孩子。

编辑: 好吧,它不是超级正确的方式,但我通过这样做得到了它的工作。在我读取文件的地方,我将所有组件存储在一个大型临时文件中。每当它在子节点中读取时,我将它们作为字符串存储在列表中的列表中,其中第一个索引是父节点id name。 这是我文件阅读之后。

for(ArrayList ls:listOf){
    if (ls.size()>1){
        for (int i = 1; i<ls.size();i++){
            for(Component comp:tempchilds){
                if(ls.get(i).equals(comp.name())){
                    rootComp.add(ls.get(0).toString(), comp);
                }
            }
        }       
    }
}

这是我的组件在root中查找父级并将子级添加到其中的功能

public void add(String s,Component component){
    if(this.name.equals(s)){
        comps.add(component);
    }else{
        if(!comps.isEmpty()){
            for(Component comp:comps){
                comp.add(s, component);
            }
        }
    }
}
很糟糕,但它有效。哈哈。还在学习,随时告诉我它有多糟糕和原因。

0 个答案:

没有答案