【问题标题】:Nesting of Maps in java in which value of map is agin another mapjava中映射的嵌套,其中映射的值是另一个映射
【发布时间】:2015-06-18 16:24:04
【问题描述】:

我有一个映射,其中键是值列表并与一个值匹配,如下所示,基本上我想创建一个映射,其中值将再次属于映射类型

 key           value
Deaswe        DealDate
TradeRe       TradeRef
Daelet        DealDate
TF            TradeRef

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

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&lt;String, Store&gt; map = ... 的内容,并在地图中添加适当的Store 实例,并且此Store 可能包含ListMap 或任何其他包含适当数据并提供查看方法的集合准备这些数据。
  • @LuiggiMendoza stiil 无法完全掌握,请您告诉我们提前谢谢,如果您能发布有助于清楚理解的代码,将不胜感激
  • 您希望新地图的元素是Map&lt;String, String&gt; 还是Map&lt;String, List&lt;String&gt;&gt;
  • @patricia 应该是你想要新地图的元素是Map&lt;String, String&gt;

标签: java dictionary


【解决方案1】:

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

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

  1. 从数据结构中准确确定您需要哪些形式的插入、迭代和访问。哪些操作频繁到足以成为潜在的性能问题?
  2. 将其指定为接口,并编写相应的单元测试。
  3. 实现接口,通常使用 API 类的组合。

这有几个优点。 API 类的复杂组合有很多功能,其中大部分不需要指定或测试。大多数代码都隐藏了对某些类组合进行迭代的复杂性,并单独进行了测试。如果您因为性能瓶颈或需求变化而需要更改实现,可以在一个类的实现中完成。

我建议在问题中添加外部黑盒要求,而不是地图方面的特定实现。

【讨论】:

  • 谢谢你能告诉我我可以创建自定义数据结构然后哪个是最好的自定义数据结构 Aldo 请你告诉我它适合哪种自定义数据结构
  • 选择最佳自定义数据结构的关键是对需求的清晰和完整的理解。请参见上面的步骤 1。恐怕我对现在的问题没有那种理解。
  • 您能否告知理解缺失
  • 我希望 B1 和 B2 有一个地图类型值
  • 我只想实现这种格式 B4 --> Deaswe --> DealDate B4 ---> Daelet --> DealDate B5 ---> TradeRe --> TradeRef B5 ---> TF --> 贸易参考
猜你喜欢
  • 1970-01-01
  • 2014-11-23
  • 1970-01-01
  • 2020-05-13
  • 2020-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-12
相关资源
最近更新 更多