Вот сложная структура данных и организация данных.Сравнение содержания Java-карты
У меня есть приложение, которое считывает данные из больших файлов и производит объекты различных типов (например, Boolean
, Integer
, String
), которые подразделяются на несколько (менее десятка) групп, а затем сохраняются в базе данных.
Каждый объект в настоящее время хранится в одной структуре данных HashMap<String, Object>
. Каждый такой HashMap
соответствует одной категории (группе). Каждая запись базы данных создается из информации во всех объектах, содержащихся во всех категориях (структуры данных HashMap).
Требовалось, чтобы проверить, являются ли последующие записи «эквивалентными» в количестве и типе столбцов, где эквивалентность должна быть проверена на всех картах путем сравнения имени (HashMap
) и типа (фактического класса) каждого хранимый объект.
Я ищу эффективный способ реализации этой функциональности, сохраняя при этом первоначальную категоризацию объектов, поскольку также необходимо указывать объекты по категориям в максимально возможной степени.
Идея состоит в том, чтобы просто сортировать ключи (например, заменяя каждый HashMap
на TreeMap
), а затем пройтись по всем картам. Альтернативой было бы просто скопировать все в TreeMap
только для сравнения.
Что было бы самым эффективным способом реализации этой функциональности?
Кроме того, как вы могли бы найти разницу (то есть добавленные поля и удаленные), между последовательными записями?
Значит, вы хотите создать собственный TreeSet, который реализует Comparator
@PNS После прочтения вашего описания во второй раз, я не уверен, если я пойму это правильно. Вы читаете такие типы, как String, Boolean, Integer из файла. Позже вы говорите о столбцах в комбинации записей. Примитивы не имеют такого, поэтому я предположил, что запись переведет на один из тех Карт, о котором вы говорите, так как keys = columns. Но, возможно, вы можете сначала прокомментировать это, чтобы прояснить это? – Omnaest
Вы почти правы. Запись - это объединение всех карт, причем именами столбцов являются имена столбцов. – PNS