在java中嵌套地图,其中map的值是另一个地图

时间:2015-06-18 16:24:05

标签: java dictionary

我有一个地图,其中键是值列表并匹配一个值,如下所示基本上我想创建一个地图,其中值将再次为地图类型

 key           value
Deaswe        DealDate
TradeRe       TradeRef
Daelet        DealDate
TF            TradeRef

下面是实现最终的代码,最后我们最终存储了如下所示的元素

Map<String, List<String>> dataMap = new HashMap<String, List<String>>();
        dataMap.put ("TradeRef", Arrays.asList("TradeRe","TF"));
        dataMap.put ("DealDate", Arrays.asList( "Daelet", "Deaswe"));


        Map<String, String> itemMap = new HashMap<String, String>(); //New map for item->key mapping
        for(String key: dataMap.keySet()) //Get all keys and iterate through
            for(String item: dataMap.get(key)) //For each item in your value list
                itemMap.put(item, key); //Create new mapping item->key

现在上面的地图工作正常,但我必须修改这个设计,因为我想要另一张地图,其中会有一个键,它的值将是上面的类型地图所以它就像

Map<String, Map<String, String>>

换句话说,上面的dataMap将是Map

的值类型

所以结构就像

key           Value 

B4 ----->    dataMap          

B5  ---->    dataMap

和dataMap有自己的键和值 所以就像

   B4  -->    Deaswe   --> DealDate
    B4 --->    Daelet   --> DealDate
    B5  --->   TradeRe  --> TradeRef
    B5  --->   TF    -->  TradeRef

大家请告诉我们如何创建这样的数据结构,其中将有一个值类型将再次为类型map的地图,以及我们如何插入和迭代它们请大家告知 在此

1 个答案:

答案 0 :(得分:0)

(可以说,这应该是一个评论,但它不合适。)

如果数据结构的要求与标准API类的直接使用非常接近,我会直接使用它。如果事情变得像你的情况一样复杂,我会采取不同的策略:

  1. 确切地确定数据结构中需要的插入,迭代和访问形式。哪些操作频繁到足以成为潜在的性能问题?
  2. 指定它作为接口,并编写相应的单元测试。
  3. 通常使用API​​类的组合来实现接口。
  4. 这有几个优点。复杂的API类组合具有许多功能,大多数功能都不需要指定或测试。迭代某些类组合的复杂性在大多数代码中是隐藏的,并且单独测试。如果由于性能瓶颈或需求变化而需要更改实现,可以在一个类的实现中完成。

    我建议在问题中添加外部黑盒要求,而不是根据地图的具体实现。