Java 嵌套哈希映射最佳实践?

Java 嵌套哈希映射最佳实践?,java,data-structures,tree,hashmap,Java,Data Structures,Tree,Hashmap,我发现自己经常使用嵌套字典和LinkedHashMaps。这让我思考,这是一个好的实践,还是应该使用其他数据结构。我的地图通常是3D的 LinkedHashMap<String, LinkedHashMap<String, LinkedHashMap<String, String>>> mapOfOIDS = new LinkedHashMap<String, LinkedHashMap<String, LinkedHashMap<Strin

我发现自己经常使用嵌套字典和LinkedHashMaps。这让我思考,这是一个好的实践,还是应该使用其他数据结构。我的地图通常是3D的

LinkedHashMap<String, LinkedHashMap<String, LinkedHashMap<String, String>>> mapOfOIDS = new LinkedHashMap<String, LinkedHashMap<String, LinkedHashMap<String, String>>>
LinkedHashMap mapOfOIDS=新建LinkedHashMap

有时,与它一起工作可能会很混乱,并且想知道是否有更好的方法?在这个例子中,我想模拟一些唯一的主机名,它们有一个唯一的端口号列表,它们有一个唯一的OID列表。

您实际上可以使用某种分隔符将三个
字符串
键组合成一个键。 根据您的实现,让当前数据
{“abc”:{“qwe”:{“qaz”:“MYDATA”}}}

在这里,您可以将三个键组合为一个键,即
abc~qwe~qaz
。因此,生成的映射将是
{“abc~qwe~qaz”:“MYDATA”}

它取决于如何查找数据。如果需要基于中间信息进行查找,嵌套映射可能是合适的。但是,如果您只是基于主机名进行查找,那么字符串->类的单个映射(其中
class
是一个包含端口和OID等的POD类)可能更容易使用。这本身没有问题,但不要将结构暴露给调用代码。提供所需的查询和更新功能,并确保所有详细信息都封装在一个类中,作为此数据的存储库,以便将任何“混乱”限制在最小的可能范围内。如果您的数据很大,那么值得研究内存中的DBs及其查询语言。