首页 > 解决方案 > 在 Java 中构建一个由 A 和 B 的列标签组成的新地图

问题描述

构建并返回一个新映射,使得新映射包含来自labelsFromA 的所有键和来自labelsFromB 的所有键。新映射将每个键发送到一个整数索引。如果有 n 个键,则从 0 到 n-1 的每个整数索引都使用一次。

private static Map<String, Integer> joinLabels(Map<String, Integer> labelsFromA, Map<String, Integer> labelsFromB){
        Map<String, Integer> map = new HashMap<String,Integer>();

        return null;
    }

标签: java

解决方案


这应该有帮助:

private static Map<String, Integer> joinLabels(Map<String, Integer> labelsFromA, Map<String, Integer> labelsFromB){
    Map<String, Integer> map = new HashMap<String,Integer>();
    int i = 0;
    for(String key : labelsFromA.keySet()){
       if(!map.containsKey(key)){
          map.put(key, i++);
       }
     }
     for(String key : labelsFromB.keySet()){
       if(!map.containsKey(key)){
          map.put(key, i++);
       }
     }
    return map;
}

我所做的就是遍历两个地图的键集。如果新地图不包含当前迭代中的键,那么我将其插入到地图中,其值为 i 并具有后增量。

不过,根据您的问题,实际的解决方案应该是这样的:

private static Map<String, Integer> joinLabels(Map<String, Integer> labelsFromA, Map<String, Integer> labelsFromB){
    Map<Integer, String> map = new HashMap<String,Integer>();
    int i = 0;
    for(String key : labelsFromA.keySet()){
       if(!map.containsValue(key)){
          map.put(i++, key);
       }
     }
     for(String key : labelsFromB.keySet()){
       if(!map.containsValue(key)){
          map.put(i++, key);
       }
     }
    return map;
}

因为每个键都需要根据您的问题存储在数字索引中!!


推荐阅读