在Java中,我正在寻找一种将多个键映射到同一个值的方法。假设我有数字0-9作为键,"x"、"y"和"z"作为值,如下所示:
0->y
1->y
2->y
3->x
4->x
5->y
6->z
7->y
8->z
9->z
现在x、y和z是非常长的字符串,我有数百万个键,所以我不能承担多次存储字符串的代价。你会怎么做呢?
我想到的一个办法是创建两个数组:生成一个人工第二个键,将原始键映射到该键,并在另一个数组中将该键映射到实际值的键。这样,值只被存储一次,原始键仍然可以间接地映射到值:
0->k1
1->k1
2->k1
3->k2
4->k2
5->k1
6->k3
7->k1
8->k3
9->k3
k1->y
k2->x
k3->z
问题是:是否有更好的数据结构可用于此?
map.put(k,v)
不是更好吗?可以像这样做:map.put(k1, k2, ... , kn, v)
。 - Christopher Perry