2017-02-13 4 views
0

Мне нужна гибкая структура для хранения данных в любом месте древовидной структуры для экспорта в JSON позже. Мои фактические данные могут быть в любом месте этого дерева. Вот структура, о которой я говорю.Гибкая структура ветвления/списка данных?

-1 
    -1.1 
    -Data 
    -Data 
    -.. 
    -1.2 
    -Data 
    -Data 
    -.. 
    -1.2.1 
     -Data 
     -Data 
     -.. 
-2 
    -Data 
    -Data 
    -.. 
    -2.1 
    -2.1.1 
     -Data 
     -Data 

Данные могут поступать в любом месте дерева. Числа должны в конечном счете быть читаемыми строками. После сериализации в JSON они должны перейти в другие приложения в виде списков.

У меня есть следующие:

public class Branch { 
    String name; //Substitute for the numbers 
    Branch deeperBranch; 
    ArrayList<Data> data; 
} 

Другая вещь, которую я хочу, чтобы убедиться в том, что всякий раз, когда дублируется Branch.name создан, он переходит в существующую Branch. Я изобретаю колесо здесь и будет ли это эффективным способом решения проблемы, с которой я столкнулся?

+1

как бы ваша текущая структура поддержки 1,1 и 1,2 быть на той же отрасли? вам не нужен список или карта String/Branch –

+0

Номера в вашем примере (1.2, 1.2.1 и т. д.) по своей сути являются иерархическими и структурированными. Ваши строки одинаковы? – Arkadiy

+0

@BrandonLing Это базовый, но я ищу, если имя ветки существует в этой ветке. Если это так, я добавлю его в список. – Madmenyo

ответ

1

Я не думаю, что есть структура, которая удобно создана для ваших нужд. С учетом сказанного, я думаю, что это достаточно тривиально создать:

public class Branch { 
    String name; //Substitute for the numbers 
    Set<Branch> subBranches; 
    List<Data> data; 
} 

Я сделал это Set, потому что вы хотите сохранить имена уникальны, однако, вы должны осуществить что-то рекурсивно проверить, если он существует. Кроме того, вам потребуется реализовать метод equals.

Я также изменил ArrayList к List, так как это хорошая практика программирования закодировать к Interface

+0

Я прочитал ваш комментарий, и это отличное решение, но мне нужно обойти заменяющее поведение «Карта», так как оно нужно добавить, когда оно существует. Я думаю, что я могу сбросить поле имени, так как это будет ключом на карте. – Madmenyo

+0

Хорошо, есть причина, чтобы сохранить поле имени. – Madmenyo

Смежные вопросы