Вот сложная структура данных и случай организации данных.
У меня есть приложение, которое считывает данные из больших файлов и создает объекты различных типов (например, Boolean
, Integer
, String
), которые подразделяются на несколько (менее дюжины) групп, а затем сохраняются в базе данных.
Каждый объект в настоящее время хранится в одной структуре данных HashMap<String, Object>
. Каждый такой HashMap
соответствует одной категории (группе). Каждая запись базы данных строится из информации всех объектов, содержащихся во всех категориях (структуры данных HashMap).
Появилось требование проверки «эквивалентности» последующих записей по количеству и типу столбцов, где эквивалентность должна проверяться по всем картам путем сравнения имени (ключ HashMap
) и типа (фактического класса) каждого хранимого объекта.
Я ищу эффективный способ реализации этой функциональности, сохраняя при этом исходную категоризацию объектов, потому что список объектов по категориям как можно быстрее также является требованием.
Идея состоит в том, чтобы просто отсортировать ключи (например, заменив каждый HashMap
на TreeMap
), а затем пройтись по всем картам. Альтернативой было бы просто скопировать все в TreeMap
только для сравнения.
Каким будет наиболее эффективный способ реализации этой функции?
Кроме того, как бы вы нашли разницу (то есть добавленные и удаленные поля) между последовательными записями?