Я храню относительно небольшое количество (возможно, в будущем будет больше), а затем ищу его, но это оказывается своего рода узким местом в моем проекте.
Для расширения у меня есть донесколько тысяч строк и несколько столбцов.Я хотел бы иметь возможность поиска с возможностью указать простое совпадение с сопоставлением всех подстановочных знаков для любого элемента.Все вставки могут иметь место при построении, в идеале дубликатов не должно быть, и количество запросов значительно перевешивает конструкцию таблицы.Мне также нужно иметь возможность сравнивать таблицы, чтобы увидеть, содержат ли они одни и те же элементы (различия между ними не нужны).Сохраненные объекты можно хэшировать, но не упорядочивать.Все это хранится в памяти.
Итак, изначально я начал с простого хэш-набора:
Set<ArrayWrapper> data = new HashSet<ArrayWrapper>();
, где ArrayWrapper
- простая оболочка для Object[]
.Это, очевидно, медленный поиск с подстановочными знаками, например, {new Integer(3), null, "Test", null}
, где null
означает совпадение с чем угодно.Я добавил индекс для наименьшего значения с подстановочными знаками, что помогает, но я чувствую, что может быть лучшее решение?