У меня есть Карта. Ключ содержит 6-символьную строку, а класс свойств примерно выглядит следующим образом:
public class Properties {
private String propertyOne;
private String propertyTwo;
private String propertyThree;
private String propertyFour;
...
...
}
Теперь предположим, что у меня есть несколько записей на карте, как показано ниже:
41111 -> {1,2,3,4,5}
41112 -> {1,2,3,4,6}
41234 -> {1,2,345,87,65}
51123 -> {100,200,30000,345,123}
51122 -> {100,200,30000,556,989}
Теперь, если я сделаю map.get("12567")
, я получу желаемый объект свойства.
У меня есть проблема: мне нужно создать структуру данных, которая может сохранять частичные данные. Под частичными данными я подразумеваю, что если я сделаю map.get("4111")
, я должен получить пересечение {1,2,3,4,5}
(свойство для 41111) и {1,2,3,4,6}
(свойство для 41112), которое это {1,2,3,4,null}.
Точно так же map.get("41")
должен произвести {1,2,null,null,null}
.
У меня прямо сейчас есть решение, которое заключается в том, что я создал несколько HashMaps, которые содержат все возможные частичные ключи и их соответствующие значения, например:
Map<String, Property>`` keyValuesForOneChar
содержит все возможные одиночные символы в качестве ключей и соответствующие им значения.
Map<String, Property> keyValuesForTwoChars
содержит все возможные два символа в качестве ключей и соответствующие им значения.
Мне не понравилось это решение, так как оно довольно простое, и я не думаю, что поддержка нескольких хэш-карт - хорошая идея. Еще одна проблема заключается в том, что мое количество необработанных данных составляет около 200000, и со всеми комбинациями перестановок я буду создавать огромные частичные данные, и с этим огромным количеством я думаю, что производительность хэш-карт снижается. Пожалуйста, предложите лучшее решение этой проблемы. У меня есть следующие ограничения:
- Решение должно быть строго только в памяти.
- Поиск должен быть быстрее. Вот почему, если обработка необработанных данных и подготовка структуры данных требуют дополнительного времени и памяти, это не должно быть проблемой.