gpt4 book ai didi

java - 使用干净的代码基于 "template" HashMap 动态创建 HashMap

转载 作者:行者123 更新时间:2023-12-02 04:54:16 24 4
gpt4 key购买 nike

我有一组哈希表的数据部分,如下所示:

    static {
A_map.put(KEY_1, value0);
A_map.put(KEY_2, value1);
A_map.put(KEY_3, value2);
A_map.put(KEY_4, value3);
...
A_map.put(KEY_N, valueN);

B_map.put(KEY_1, Xvalue0);
B_map.put(KEY_2, Xvalue1);
B_map.put(KEY_3, Xvalue2);
B_map.put(KEY_4, Xvalue3);
...
B_map.put(KEY_N, XvalueN);


C_map.put(KEY_1, Yvalue0);
C_map.put(KEY_2, Yvalue1);
C_map.put(KEY_3, Yvalue2);
C_map.put(KEY_4, Yvalue3);
...
C_map.put(KEY_N, YvalueN);

....etc
}

即所有哈希中的键都相同,但每个 HashMap 的值不同。
我选择在运行时使用哪个 HashMap ,因为我已将这些 HashMap 作为另一个 HashMap 的值。

但我认为这样可以更干净。我的意思是所有 HashMap 中的键都是相同的,只有值应该根据我在运行时选择的 HashMap 类型而有所不同。
干净地设计这个的好方法是什么?

最佳答案

我认为Google Guava's Table structure像魅力一样适合您的用例。 Table<RowKey, ColumnKey, Value>Map<RowKey, Map<ColumnKey, Value>> 等结构的绝佳替代品,这恰好是您的情况。

从概念上讲,您可以使用散列的名称作为行键(示例中的 A、B、C 等),将实际键用作列键(示例中的 KEY_1、KEY_2、KEY_3 等)。示例)。

当您实际处理哈希表时,我建议您使用 HashBasedTable :

Table<String, String, String> table = 
HashBasedTable.create(M, N); // M maps, N keys per map

table.put(A, KEY_1, value0);
table.put(A, KEY_2, value1);
table.put(A, KEY_3, value2);
table.put(A, KEY_4, value3);
...
table.put(A, KEY_N, valueN);

table.put(B, KEY_1, Xvalue0);
table.put(B, KEY_2, Xvalue1);
table.put(B, KEY_3, Xvalue2);
table.put(B, KEY_4, Xvalue3);
...
table.put(B, KEY_N, XvalueN);

...
...

table.put(M, KEY_1, Yvalue0);
table.put(M, KEY_2, Yvalue1);
table.put(M, KEY_3, Yvalue2);
table.put(M, KEY_4, Yvalue3);
...
table.put(M, KEY_N, YvalueN);

如果您需要获取 A 的所有映射,您可以使用Tablerow()方法:

Map<String, String> mapA = table.row(A);

请记住,此结构针对行进行了优化,这意味着基于列获取数据需要一些迭代。

关于java - 使用干净的代码基于 "template" HashMap 动态创建 HashMap ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28927733/

24 4 0