Если A поддерживает внутреннюю карту примерно так:
Map<String, B> bMap = new LinkedHashMap<String, B>();
И у вас были функции-члены для вставки экземпляров B и получения экземпляров B, и вот так:
public void addB(B b) {
bMap.put(b.getName(), b);
}
public B getB(String name) {
return bMap.get(name);
}
Тогда вы можете быть уверены, что карта будет содержать ключи с уникальными именами B.
Вы можете расширить эту же логику, чтобы поддерживать карту с уникальными именами A:
A a = new A("someAName");
a.addB(new B("someName"));
a.addB(new B("someOtherName"));
Map<String, A> aMap = new LinkedHashMap<String, A>();
aMap.put(a.getName(), a);
Вы можете поместить aMap
в другой класс и реализовать метод getB
:
public B getB(String aName, String bName) {
return aMap.get(aName).getB(bName);
}