我有以下代碼:的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;
}
}
而且主要有以下幾個:
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
}
現在我需要把所有的B的給定的A。這完美地工作。
但我還需要獲得給定的B的A。
每個B是獨一無二的。因此,每個B只能是一個A的成員。
這樣做的最好方法是什麼?
「每個B都是唯一的,所以每個B只能是一個A的成員。」 < - 那麼你應該首先用這種方式來模擬你的數據結構。因爲在你發佈的代碼中沒有任何東西阻止你做'a1.addB(b1); 'b2.addB(b1);' –
使'B'構造函數包具有兩個參數private:'B(String name,A parent)',並在'B'中存儲'A'引用。然後向'A'添加一個方法:'public B createB(String name)',它調用這個構造函數爲'return new B(name,this);'。這樣你通過'A'創建'B'。如果'B'不能在沒有'A'的情況下「生存」,你甚至可以將它定義爲'A'的內部類。 – DVarga