Получить последний набор на карте - PullRequest
3 голосов
/ 05 декабря 2011

Мне нужно получить последний набор записей на карте.
Но у моей карты есть этот параметр:

HashMap<Integer, HashMap<String, HashMap<Integer, Object>>> map = new HashMap<Integer, HashMap<String,HashMap<Integer,Object>>>(); 

Приведенный ниже пример:
Если у меня есть карта с таким значением:

{1=  
   ANIMALS=
    {1=
        {1=
            {field1=dog,field2=cat}, 
            1=
                {1=
                    {1=
                        {field1=bird,field2=horse}}, 
                2=
                    {1=
                        {field1=snake,field2=cow}}}}

Я думаю использовать instanceOf, но я не знаком с этим. Каждая карта может содержать другую карту. Вот почему я использовал Object.

как я могу получить последний набор записей из Object?
мой вывод должен быть:

{1=
   {field1=dog,field2=cat}, 
{2=
   {field1=bird,field2=horse},
{3=
   {field1=snake,field2=cow}

последняя карта будет

HashMap<Integer,HashMap<String,String>>

Любая помощь будет высоко ценится.

Спасибо

1 Ответ

1 голос
/ 06 декабря 2011

Если вы используете рекурсивную структуру данных, то вам нужен рекурсивный алгоритм.

Сделайте простую рекурсивную функцию и один раз введите для map.get (key) не хеш-карту, вы знаете, что достигли нижней части дерева.

Но, как кто-то сказал (Кнут?) - не проектируйте алгоритмы, проектируйте структуры данных.Для вас это выглядит так, будто эта модификация дерева может сделать работу.Затем вы можете применить поиск в порядке поиска и найти все листовые узлы.На самом деле, эта хеш-карта хеш-карт хеш-карт на самом деле является деревом, но поскольку вы не используете какой-либо интерфейс выше HashMap / Value, вы вынуждены использовать приведение к объекту (это все еще хорошо, это просто не «правильный» ООП способ делать вещи).

Вы можете найти множество примеров древовидных структур / алгоритмов (даже в java) в Википедии самостоятельно, поэтому я не буду вставлять здесь ссылки.

Пожалуйста, дайте мне знать, если вынужна помощь с исходным кодом.

Приветствия

...