链接2个对象并从每个对象获取它们

dbf7pr2w  于 2021-07-08  发布在  Java
关注(0)|答案(2)|浏览(323)

我最近遇到了这个问题,我想看看最合适的解决方案。
我有两个对象,a和b,b可以包含多个a,我希望它能够从彼此那里得到它们,即:a.getb();和b.getas();
最好的办法是什么?我曾想过这样做:

for (A a : aList) {
    a.getB().addA(a);
}

因此,调用a.getb().getas().包含(a);将返回真值
提前谢谢。

sg3maiej

sg3maiej1#

几乎和塔什基西的回答一样,但我认为他没有回答 a.setB(this); ... 下面是代码。我还在类的setb方法上添加了helper,但只通过关系的“拥有”端添加可能更好。
假设:任何一个a只能属于一个b,否则,它需要两边的列表和不同的helper函数

public class A {
    private B b;

    public B getB() {
        return b;
    }

    public void setB(B b) {
        this.b = b;
        // Needed only if you want to add from either end.
        if (!(b.getAList()).contains(this)) {
            b.getAList().add(this);
        }
    }
}

public class B {
    private final List<A> aList = new ArrayList<>();

    public List<A> getAList() {
        return aList;
    }

    public void addA(A a) {
        aList.add(a);
        a.setB(this);
    }
}
xmq68pz9

xmq68pz92#

你在正确的轨道上。a上有一张单子,b上有一张单子。编写适当的getter和setter代码,并且在创建对象时不要忘记在相应的列表中插入对象。

相关问题