将hashMap存储在hashMap中

我正在从文本文件中读取数据,并希望将HashMap存储在另一个HashMap中。

HashMap<string,HashMap> 

如何存储数据并检索它? 任何示例代码将不胜感激…谢谢

例:

创建和填充地图

 Map> outerMap = new HashMap>(); Map innerMap = new HashMap(); innerMap.put("innerKey", new Value()); 

存储地图

 outerMap.put("key", innerMap); 

检索地图及其值

 Map map = outerMap.get("key"); Value value = map.get("innerKey"); 

创建两个简单的Hashmaps:InnerMap和OuterMap

  HashMap> outerMap = new HashMap>(); HashMap innerMap = new HashMap(); 

填充HashMaps

  innerMap.put("InnerKey", "InnerValue"); outerMap.put("OuterKey", innerMap); 

从HashMaps中重新获取值

  String value = ((HashMap)outerMap.get("OuterKey")).get("InnerKey").toString(); System.out.println("Retreived value is : " + value); 

你会得到一个看起来像二维HashMap的东西。 这意味着您需要2个String来存储值,并且还需要检索一个值。

例如,您可以编写一个类来包装该复杂性,就像那样(未经测试的代码):

 public class HashMap2D { private HashMap> outerMap; public HashMap2D() { outerMap = new HashMap>(); } public void addElement(String key1, String key2, T value) { innerMap=outerMap.get(key1); if (innerMap==null) { innerMap = new HashMap(); outerMap.put(key1,innerMap); } innerMap.put(key2,value); } public T getElement(String key1, String key2) { Hashmap innerMap = outerMap.get(key1); if (innerMap==null) { return null; } return innerMap.get(key2); } } 

如果您希望方法一次处理多个数据,则会更复杂,但遵循相同的原则。

这将通过使用双键将两个嵌套的地图展平为一个大地图,使用一个地图解决相同的问题(尽管这并不直接回答您的问题)。

 public class Key2D{ private final String outer; private final String inner; public Key2D(String outer, String inner){ this.outer = outer; this.inner = inner; } //include default implementations for //Object.equals(Object) and Object.hashCode() //Tip: If you're using Eclipse it can generate //them for you. } 

然后用双键创建一个地图:

 Map map = new HashMap(); map.put(new Key2D("outerKey", "innerKey"), "Value"); map.get(new Key2D("outerKey", "innerKey")); // yields "Value" 

这提供了更短的解决方案。 表现明智,它可能大致相同。 内存性能可能略好一些(但只是猜测)。

HashMap中的HashMap会导致可读性问题,尤其是当它超出两个级别时。 我假设当您从文本文件中读取数据时,您希望对行和列中的输入进行分类,这些输入应该类似于类别中的多级别类别或类别。 如果你可以发布样本数据和你的意图,我可以想出一个Custom类的例子。

 public class Category { private List subCategories; private List items; } 

上述数据结构将帮助您在分类数据时解决任何级别的嵌套问题。 此示例特定于商店商品的分类。