使用ArrayList处理一对多关系

时间:2013-09-30 18:45:36

标签: java arraylist one-to-many

我在我的小型android项目中努力使用一对多的关系。我已经解决了这个问题(我正在学习java)。尝试将子对象添加到父对象时,我的程序崩溃。我花了一些时间来解决它。我需要很少的支持才能回到正轨。感谢。

public class Master {
    public static void main(String[] args) {
        Parent big;
        big = new Parent("aParent");
        big.addChild(new Child("c1"));
        big.addChild(new Child("c2"));
        for (Child ch : big.getChildren()) {
            System.out.println(ch.toString());
        }
    }
}

public class Parent {
    public String name;
    public List<Child> children = new ArrayList<Child>();
    public Parent(String name) {
        // TODO Auto-generated constructor stub
        this.name = name;
        this.children = null;
    }
    public void addChild(Child c) {
        this.children.add(c);
    }
    public List<Child> getChildren() {
        return children;
    }
}

public class Child {
    public String name;
    public Child(String s) {
        this.name = s;
    }
    public String toString() {
        return name;
    }
}

4 个答案:

答案 0 :(得分:3)

我打赌你的崩溃是NullPointerException

这是因为,在您的Parent班级中:

  • 您将children List初始化为实例声明
  • 但是,您在构造函数中重新分配了children Listnull的引用(在后以编程方式称为) - 请参阅您的代码: this.children = null; // to remove

因此,一旦调用了addChild方法,您就会尝试将add参数设为null List

答案 1 :(得分:1)

this.children = null;是您的问题,请将其删除,然后尝试

它会在你的add方法

中导致NullPointerException

答案 2 :(得分:1)

删除此行:this.children = null;

您正在消灭您在此处创建的ArrayList:

public List<Child> children = new ArrayList<Child>();

答案 3 :(得分:0)

您正在使用字段初始值设定项和构造函数初始化。注释掉这一行: this.children = null;