创建引用父阵列列表的方法

时间:2011-07-11 15:00:08

标签: java arraylist parent-child parent backtrace

所以我问了一个类似的问题,但我不认为我得到的答案与我想做的事情有关。

说我有这个班:

Java代码

public class Section
{
    private String sDocumentTitle;
    private String sHeadingTitle;
    private String sText;
    public ArrayList<Section> aSiblingSection = new ArrayList<Section>();
    public ArrayList<Section> aChildSection = new ArrayList<Section>();
    public ArrayList<image> aImages = new ArrayList<image>();

    public void setName(String docTitle)
    {
        //set passed parameter as name
        sDocumentTitle = docTitle;
    }

    public void addName (String docTitle)
    {
        //adds remaining Title String together
        sDocumentTitle += (" " + docTitle);
    }

    public String getName()
    {
        //return the set name
        return sDocumentTitle;
    }

    public void setSection(String section)
    {
        //set passed parameter as name
        sHeadingTitle = section;
    }

    public void addSection(String section)
    {
        //adds section parts together
        sHeadingTitle += ("" + section);
    }

    public String getSection()
    {
        //return the set name
        return sHeadingTitle;
    }
    public void setText(String text)
    {
        //set passed parameter as name
        sText = text;
    }

    public void addText(String text)
    {
        //adds 
        sText += (" " + text);
    }

    public String getText()
    {
        //return the set name
        return sText;
    }
    public ArrayList getChildSection()
    {
        return aChildSection;
    }
}  

并且在驱动程序类中以这种方式初始化子部分......

Section aSection = new Section();
aMainSection.get(0).aChildSection.add(aSection);

基本上,有人可以告诉我如何在section类中添加一个方法,该方法从'aChildSection'的数组列表中返回父项?

3 个答案:

答案 0 :(得分:3)

添加构造函数

private final Section parent;
public Section(Section parent) {
    this.parent = parent;
}

public Section getParent() {
    return parent;
}

添加孩子时

Section aSection = new Section(aMainSection.get(0));
aMainSection.get(0).aChildSection.add(aSection);

答案 1 :(得分:2)

使用您的模型,您不能。添加父部分:

private Section parent;

并为每个子会话设置它(在父会话中它将为null)

答案 2 :(得分:2)

我猜,每个部分(主要部分除外)都有一个父级。诀窍是,一个部分需要知道它的父节。

一个广泛使用的模式是使用构造函数设置父项并向构造函数添加一些逻辑,以便它自动将该段注册为父项的子项:

public Section(Section parent) {
  this.parent = parent;   // remember your parent
  parent.addChild(this);  // register yourself as your parent's child
}

然后使用此代码添加一个部分:

Section mainSection = aMainSection.get(0);   // ugly!!
Section section = new Section(mainSection);

重构提示 - 声明所有字段私有并实施getter。如果那些获取者不返回内部列表而只返回列表中的值,那就更好了。