Java 8 - 获取列表元素的"父"对象

Nib*_*bor 3 java collections list java-8

我有以下代码:

public class A {
   private String name;
   private List<B> bs;

   public A(String name) {
       this.name = name;
       this.bs = new ArrayList<>();
   }

   public void addB(B b) {
       bs.add(b);
   }
   public List<B> getBs() {
       return bs;
   }    
}

public class B {
    private String name;

    public B(String name) {
        this.name = name;
    }

    public String toString() {
        return name;
    }   
}
Run Code Online (Sandbox Code Playgroud)

以下主要内容:

public static void main(String[] args) {
        A a1 = new A("A1");
        A a2 = new A("A2");

        B b1 = new B("B1");
        B b2 = new B("B2");
        B b3 = new B("B3");

        a1.addB(b1);
        a2.addB(b2);
        a1.addB(b3);

        System.out.println(a1.getBs()); // [B1, B3]

        b3.getA(); // How can I do this? => Should return A1

}
Run Code Online (Sandbox Code Playgroud)

现在我需要把所有的B的一个给定的一个.哪个效果很好.

但我也需要获得一个给定的.

每个B都是独特的.所以每个B只能是一个A的成员.

做这个的最好方式是什么?

Guy*_*Guy 6

您可以添加A成员B

public class B {
    private String name;
    private A a;

    public B(String name) {
        this.name = name;
    }

    public String toString() {
        return name;
    }

    public void setA(A a) {
        this.a = a;
    }

    public A getA() {
        return this.a;
    }
}
Run Code Online (Sandbox Code Playgroud)

而当添加设置BA

public void addB(B b) {
    bs.add(b);
    b.setA(this);
}
Run Code Online (Sandbox Code Playgroud)