我想知道什麼是最好的數據結構(一個或多個),以用於以下情形:Java數據結構問題
我有2分物體A型和B
A可能含有B的許多實例
A.name是唯一的。 B.name在它的實例A中是唯一的(儘管不是全局唯一的)
我想能夠提供訪問方法,如 getA(String aName)返回一個; getB(String aName,bName)返回b;
所有幫助是非常讚賞,
克里斯
我想知道什麼是最好的數據結構(一個或多個),以用於以下情形:Java數據結構問題
我有2分物體A型和B
A可能含有B的許多實例
A.name是唯一的。 B.name在它的實例A中是唯一的(儘管不是全局唯一的)
我想能夠提供訪問方法,如 getA(String aName)返回一個; getB(String aName,bName)返回b;
所有幫助是非常讚賞,
克里斯
public class DataStructure{
private Map<String, A> aMap = new HashMap<String, A>();
public getA(String name){
return aMap.get(name);
}
public getB(String aName, String bName){
A anA = getA(aName);
if(null != anA){
return anA.getB(bName);
}else{
return null;
}
}
}
public class A{
String name;
Map<String, B> myBs = new HashMap<String, B>();
public A(String name){
this.name = name;
}
public void putB(B foo){
myBs.put(foo.getName(), foo);
}
public B getB(String bName){
return myBs.get(bName);
}
}
public class B{
String name;
public B(String name){
this.name=name;
}
}
如果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 = 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);
}
它聽起來像你需要這樣的東西(除了更好的名稱,初始化,錯誤處理等 - 這只是一個骨架):
public class AContainer
{
private Map<String, A> map;
public A getA(String name)
{
return map.get(name);
}
public B getB(String nameA, String nameB)
{
return getA(nameA).getB(nameB);
}
}
public class A
{
private Map<String, B> map;
public B getB(String name)
{
return map.get(name);
}
}
class a {
String name
List<B> bList
public getName() {....}
public getBByName(String name) {
....
}
}
謝謝你們所有的回覆 - 這真的很有幫助! 這裏的人在stackoverflow規則:) – QuakerOat 2010-07-30 15:15:09