2012-11-02 150 views
0

我在一個項目中工作,我必須連接基於bank_name的特定數據庫。我使用java,struts2,hibernate。 例如:基於映射內部映射的鍵值檢索值

{'sbi': 
    {'host':'111.111.15.45','port':3306,'username':'xxxx','password':'xxxx','database':'sbidb'} 

這裏SBI是BANK_NAME其爲,然後作爲一個值有另一個地圖。所以我想根據bank_name(如:'sbi')檢索所有值,例如host,port,db。 如何做到這一點?

回答

1

這很簡單。

您地圖是這樣的:

Map<String, Map<String, String>> map = new HashMap<String, Map<String, String>>(); 
..... 

現在,你可以從如下內映射的鍵值對:

Map<String,String> sbiMap = map.get("sbi"); 
    Set<String> keys = sbiMap.keySet(); 
    for(String key: keys){ 
    System.out.println("key="+key+" value = " + sbiMap.get(key)); 
    } 

這將打印在所有內部密鑰和相應的值地圖爲sbi

+0

完美,它的工作, –

+0

@arvin_codeHunk:很高興知道。請不要忘記接受答案。 –

0

您應該有一個Map<String,Map<String,String>>。要獲得室內地圖的鑰匙,請使用地圖的keySet()功能。例如:

Map<String,Map<String,String>> X; 
Set<String> sbikeys = X.get('sbi').keySet(); 
0

您可以使用下面的數據結構來實現這個

Map<String, Map<String,String> bankdetails = new HashMap<String, Map<String,String>(); 

把SBI的細節,

第一填充SBI具體細節

HashMap<String, String> details = new HashMap<String,String>(); 

    details.put("host","XXXX); 

    details.put("port", "101111"); 

    ...... 

然後使用把sbi的細節如下

bankdetails.put(sbi ,details); 
+0

如果有超過10家銀行,並且所有細節都不同,那麼應該怎麼做? –

+0

我的意思是,bankdetails.put(sbi,details);如果我想爲另一家銀行添加另一個詳細信息例如details.put(「主機」,「yyyy」),那麼我應該創建另一個地圖,如細節。 –