2012-11-02 77 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”),那么我应该创建另一个地图,如细节。 –