一说到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);
  }
 }

 

在map中一个key中存多个值的更多相关文章

  1. #有如下值集合[11,22,33,44,55,66,77,88,99,90...],将所有大于66值保存至字典的一个key中,将小于66的值保存至大二个key的值

    #!/usr/bin/env python #有如下值集合[11,22,33,44,55,66,77,88,99,90...],将所有大于66值保存至字典的一个key中,将小于66的值保存至大二个ke ...

  2. 【mybatis】service层中一个方法中使用mybatis进行数据库的 多个修改操作,可能是update也可能是delete操作,但是sql语句命名执行并且在控制台打印出来了,但是数据库中未更新到数据【事务的问题】

    问题描述: service层中一个方法中使用mybatis进行数据库的 多个修改操作,可能是update也可能是delete操作,但是sql语句命名执行并且在控制台打印出来了,但是数据库中未更新到数据 ...

  3. 六、Java中一个key存多个value的MultiValueMap,一键多值

    一.MultiValueMap介绍,与map,HashMap相差不多 添加一个Key对应一个Value的:void add(K, V); 添加一个Key对应多个Value的:void add(K, L ...

  4. 为什么Java中一个char能存下一个汉字

    在Java中,char的长度是2字节,即16位,2的16次方是65536. 1.如果采用utf-8编码,一个汉字占3个字节,char为什么还能存下一个汉字呢? 参考:https://developer ...

  5. mybaties中在xml中map添加一个list中的判断

    if (uIds.size() > 0) { map.put("uIds", uIds); } else { map.put("uIds", null); ...

  6. 08 集合[11,22,33,44,55,66,77,88,99],将所有<66的值保存至字典的第一个key中,将所有>=66的值保存至字典的第二个key中。即:{'k1':<66的所有值,'k2':>=66的所有值}

    li = [11,22,33,44,55,66,77,88,99]dict = {'k1':[],'k2':[]}for i in li:    if i < 66:        dict[& ...

  7. springMVC中一个class中的多个方法

    在前面.已经可以利用SpringMVC进行简单的例子了,但是,在controller中我们实现了Controller接口.这样就必须实现handleRequest(HttpServletRequest ...

  8. CI框架中一个类中调用另一个类中已经加载对象测试

    controller.php <?php class CI_Controller { private static $instance; public function __construct( ...

  9. 5.oracle中一个字段中存储'a','b'与'a'与a的写法,存储过程中与之对应

    select '''a'',''b''' from dual; --'a','b' select '''a''' from dual; --'a' select 'a' from dual; --a

随机推荐

  1. acrobat-网格-参考线-网格大小设置

      视图--显示/隐藏--标尺及网格-网格/标尺: 网格:ctrl+U 标尺:ctrl+R     标尺:   网格: 标尺+网格:   网格大小设置: 编辑--首选项-单位和参考线     2013 ...

  2. 各种不同的mq

    目前业界有很多MQ产品,我们作如下对比: RabbitMQ 是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它变的非常重量 ...

  3. [Makefile]多目录Makefile写法

    最近需要写一个测试程序,这个测试程序需要集成一些功能,写在同一个文件看上去很不好,多个文件的Makefile又不是很熟,于是分享下面这篇文章 先介绍下,调试Makefile时,想知道某个变量的值,怎么 ...

  4. SpringMVC HandlerMethodArgumentResolver自定义参数转换器 针对HashMap失效的问题

    自定义Spring MVC3的参数映射和返回值映射 + fastjson 自定义Spring MVC3的参数映射和返回值映射 + fastjson首先说一下场景:在一些富客户端Web应用程序中我们会有 ...

  5. HTML——图片自动轮换和手动轮换

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. 编译器内置宏__LINE__&__FUNCTION__

    编译器内置宏: 先介绍几个编译器内置的宏定义,这些宏定义不仅可以帮助我们完成跨平台的源码编写,灵活使用也可以巧妙地帮我们输出非常有用的调试信息. ANSI C标准中有几个标准预定义宏(也是常用的): ...

  7. 使用JPedal取代PDFBox

    http://wanggp.iteye.com/blog/1144177 ———————————————————————————————————————————————— 之前都是使用PDFBOX0. ...

  8. r语言与dataframe

    什么是DataFrame 引用 r-tutor上的定义: DataFrame 是一个表格或者类似二维数组的结构,它的各行表示一个实例,各列表示一个变量. 没错,DataFrame就是类似于Excel表 ...

  9. 使用特殊构造的5GB文件测试Win2012Dedup功能

    WinServer2012一个崭新的功能就是支持重复数据删除功能.为了测试这个功能的情况,特别构造了一个特殊的5GB文件用于此次测试.惯例,先说下测试环境的搭建1 使用ESXi5上的版本8的VM,安装 ...

  10. 获取platformVersion、deviceName、appPackage

    命令获取如下: 手机与电脑连接 devicename:    adb devices platformversion :   adb shell getprop ro.build.version.re ...