В 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
Вопрос, хотя: есть ли лучшая структура данных для этого?