根据地图内的地图中的键检索值

时间:2012-11-02 05:26:05

标签: java collections map struts2 arraylist

我正在开发一个项目,我必须根据bank_name连接特定的数据库。我正在使用java,struts2,hibernate。 例如:

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

此处 sbi 是bank_name,它是,然后作为值,还有另一个地图。所以我想根据bank_name检索所有值,例如host,port,db(例如:'sbi')。 怎么做到这一点?

3 个答案:

答案 0 :(得分: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地图中的所有内部键和相应值。

答案 1 :(得分:0)

你应该有Map<String,Map<String,String>>。要获取内部地图的键,请使用地图的keySet()功能。例如:

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

答案 2 :(得分: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);