让我解释一下我的情况。 我有一些需要维护的层次结构。 下面是一个显示此层次结构的图像。 图像后面我会进行解释。
A
| +--> A1.1 ---> X
| |
+--> A1 ---+--> A1.2 ---> Y
| |
| .
+--> A2 .
.
.
- 从
A
到A1, A2...
是一对多的关系 - 从
A1
到A1.1,A1.2...
是一对多的关系 - 从
A1.1
到X
和从A1.2
到Y
是一对一的关系。
最初我设计时使用多个HashMaps
来维护这个关系。但后来我很快意识到更新变得非常困难。
拥有多个HashMaps
意味着我必须自己处理不同关系之间的唯一性。例如,A1.1
也可以存在于根节点B
中。所以我必须将A
附加到A1.1
中以确保唯一性。现在,如果我必须修改值A
,那么我会遇到很大的麻烦,因为我已经用它来限定A
中所有键的名字为A_A1.1
。
现在我在考虑使用嵌套的HashMaps
。所以代码变成这样:
HashMap<String, HashMap<String, HashMap<String, CustomObject>>> _worldsBiggestHash;
这种做法可以吗?我需要做很多簿记工作,因为我要使用嵌套哈希表,但是至少增删改查和唯一性问题是自动处理的。
如果这样不行,有人能建议我另一种更好的结构吗?
HashMap
已经表明设计不好。你应该考虑创建自己的类来隐藏嵌套的映射。 - MarounA1.1
标识为A_A1.1
。这意味着如果我需要将A
更改为NEW_A
,那么我必须将所有相关的A_A1.1
更改为NEW_A_A1.1
,这意味着我必须遍历包含A_A1.1、A_A1.2...
作为键的哈希表中的每个键。 - ShrayasExample1
的新类,其中包含数据成员Hashmap
和String
等。 - Hungry Blue Dev