在map中一個key中存多個值


一說到map都想到key-value鍵值隊存在。key可以為最多一個null的key。

今天開發中一個業務需求,在map中一個key中存多個對象。

我首先想到Map<String,List>造型來解決。尤其是那種一對多的可以這么設計。

Map<String,List> map = new HashMap<String,List>();//模型就是這么個。

for(int i=0;i<listObj.size();i++){

   key = listObj.getId(); --可以任何值

   value = listObj.get(i); --

   if(map.containsKey(key)){

   map.get(key).add(value);        
  } 
  else {
   List vals =  new  ArrayList();
   vals.add(value);
   map.put(key,vals)
  }

}

寫到這里,必須要說哈遍歷map的常用方法了。經常在用,但是還是要總結才能進步。
  Map<String, String> map = new HashMap<String, String>();
  map.put("1", "value1");
  map.put("2", "value2");
  map.put("3", "value3");
  
  //第一種:普遍使用,二次取值
  System.out.println("通過Map.keySet遍歷key和value:");
  for (String key : map.keySet()) {
   System.out.println("key= "+ key + " and value= " + map.get(key));
  }
  
  //第二種
  System.out.println("通過Map.entrySet使用iterator遍歷key和value:");
  Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
  while (it.hasNext()) {
   Map.Entry<String, String> entry = it.next();
   System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
  }
  
  //第三種:推薦,尤其是容量大時
  System.out.println("通過Map.entrySet遍歷key和value");
  for (Map.Entry<String, String> entry : map.entrySet()) {
   System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
  }

  //第四種
  System.out.println("通過Map.values()遍歷所有的value,但不能遍歷key");
  for (String v : map.values()) {
   System.out.println("value= " + v);
  }
 }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM