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

相信很多人都对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方法的第二个判断里面。

时间: 2024-08-10 02:11:02

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

Java集合Map接口与Map.Entry学习

Java集合Map接口与Map.Entry学习 Map接口不是Collection接口的继承.Map接口用于维护键/值对(key/value pairs).该接口描述了从不重复的键到值的映射. (1) 添加.删除操作: Object put(Object key, Object value): 将互相关联的一个关键字与一个值放入该映像.如果该关键字已经存在,那么与此关键字相关的新值将取代旧值.方法返回关键字的旧值,如果关键字原先并不存在,则返回null Object remove(Object

JAVA集合------Map (HashMap实现)

package java_util_map; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Set; public class MapTest01 { public static void main(String[] args) { /*  * Map是一个接口,HashMap是Map的一个实现类  

java集合-Map

面试当中经常有被问道对java集合的理解,一直都是停留在java面试答案的水平,这次终于想好好研究一下了. Java的集合一般相对于数组去比较,数组是大小固定的并且同一个数组只能存放类型一样的数据.数组的定义就是相同类型.固定长度的一组数据,一旦被初始化,长度不可更改.所以如果长度不确定,一种方法是初始化的时候长度申请足够大,但这样容易造成内存的浪费:另一种就是用集合.Java集合主要分为三种类型: Set(集)->接口Collection List(列表)->接口Collection Map

Java集合——Map接口

1.定义 Map用于保存存在映射关系<key,value>的数据.其中,key值不能重复(使用equals()方法比较),value值可以重复 2.方法 put(key,value):添加元素 get(Object key):获取指定key的元素 keySet():返回指定对象key的集合 values():返回指定对象value的集合 remove(Object key):移除指定key的元素,并且返回对应值的引用 entrySet():返回映射中包含映射关系的视图 3.常用实现类 Hash

Java集合Map(四)

****************************Map********************************** Map Hashtable HashMap 1.键值对 2.没有迭代顺序 SortedMap Properties LinkedHashMap 带有迭代顺序的HashMap NavigableMap TreeMap ********************************HashMap*************************************

Java集合-----Map详解

      Map与Collection并列存在.用于保存具有映射关系的数据:Key-Value      Map 中的 key 和  value 都可以是任何引用类型的数据      Map 中的 key 用Set来存放,不允许重复,即同一个,常用String类作为Map的“键”      key 和 value 之间存在单向一对一关系,即通过指定的 key 总能找到唯一的.确定的 value 1.HashMap HashMap是线程不安全的 package com.gather; impor

java框架篇---hibernate(一对多)映射关系

一对多关系可以分为单向和双向. 一对多关系单向 单向就是只能从一方找到另一方,通常是从主控类找到拥有外键的类(表).比如一个母亲可以有多个孩子,并且孩子有母亲的主键作为外键.母亲与孩子的关系就是一对多的关系.如果想对母亲信息的操作同时也反应在其孩子信息上那么可以在母亲类配置文件的集合属性上配置cascade="all",表示对关联实体进行级联更新配置. “主”端: 多的一端 <?xml version="1.0"?> <!DOCTYPE hiber

java集合Map&amp;HashMap

http://blog.csdn.net/u011240877/article/category/6447444/1 Map 接口提供了三种角度来分析 Map: KeySet:KeySet 是一个 Map 中键(key)的集合,以 Set 的形式保存,不允许重复,因此键存储的对象需要重写 equals() 和 hashCode() 方法.可以通过 map.keySet() 方法获得. 使用 keySet 遍历: Set set = map.keySet(); for (Object key :

java 集合Map

1. Map集合 特点:将键映射到值的对象,一个映射不能包含重复的键; 每个键可以映射到最多一个值.无序. Map 与 Collection集合的区别: Map集合存储元素成对出现,双列,Collection是单列的 Map的键是唯一的,Collection 的子体系Set是唯一的 Map集合的数据结构针对键有效,与值无关 Collection的集合的数据结构只针对元素有效 功能概述: 1. 添加功能 V put(K key, V value):添加(修改)功能: 如果该键已经存在,则将值替换,