码迷,mamicode.com
首页 > 编程语言 > 详细

关于JAVA集合MAP处理一对多的关系

时间:2016-08-13 16:50:14      阅读:257      评论:0      收藏:0      [点我收藏+]

标签:

相信很多人都对java的集合知识都有所了解,这是一些基础知识,而且也是JAVA开发的必备知识,对于开发经验稍微丰富一些的工程师,对于三个集合接口的应用肯定也是炉火纯青了。好了,不废话,直奔主题:map集合处理一对多。

 

map:其结构是{key1=value1,key2=value2,key3=value1,key4=value3……}

  key:唯一,不可可重复。

  value:可重复,任何元素。

 

而map处理一对多,就是利用了map的特性。

直接上代码:

import java.util.HashMap;
import java.util.Map;

public class Test {
    public static Map<String,String> data() {
        Map<String,String> map = new HashMap<String,String>();
        map.put("a#1", "m");
        map.put("b#2", "n");
        map.put("c", "o");
        map.put("d#1", "x");
        map.put("e#2", "y");
        return map;
    }
    public static void main(String[] args) {
        Map<String,Map<String,String>> finalMap = new HashMap<String,Map<String,String>>();
        Map<String,String> list = new HashMap<String,String>();
        Map<String,String> map = data();
        for(String key:map.keySet()){
            if(key.contains("#")){
                String newMapKey = key.substring(key.indexOf("#"),key.length());
                if(finalMap.containsKey(newMapKey)){
                    Map<String,String> tool = finalMap.get(newMapKey);
                    tool.put(key.replaceAll(newMapKey, ""), map.get(key));
                }else{
                    Map<String,String> newMap = new HashMap<String,String>();
                    newMap.put(key.replaceAll(newMapKey, ""), map.get(key));
                    finalMap.put(newMapKey, newMap);
                }
            }else{
                list.put(key, map.get(key));
            }
        }
        System.out.println(finalMap.size());
        System.out.println(list.size());
    }
}

感兴趣的小伙伴,可以把这个测试类跑起来,看看最终的结果,建议使用debug模式,看看每一步的参数和最终的结果,你会发现,里面存在一个很巧妙的想法,就在main方法的第二个判断里面。

关于JAVA集合MAP处理一对多的关系

标签:

原文地址:http://www.cnblogs.com/manxiaolong/p/5768286.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!