Как разделить на "/" и сохранить как иерархическое, как дерево в Java? - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь хранить объекты Instance иерархически, как древовидная структура данных.В моем случае я получу список строк:

"A / B / C", "A / B / D", "A / T / P", "Q / W / E" и т. Д..

"/" представляет их иерархию.Например, родитель B, B родитель C и D.

Каждая из этих букв представляет объект Instance, поэтому после разделения их в соответствии с "/", как я могу сохранить эти буквы как объекты Instances всписок по иерархии в Java ?.Могу ли я также добавить родительский или дочерний или оба поля в объекте Instance.

Объект Instace:

public class Instance { 

  private String name;

  private String description;

  private int type;
}

Спасибо.

1 Ответ

0 голосов
/ 31 января 2019

Во-первых, вам нужно пересмотреть структуру данных, Instance класс.Из приведенного вами примера видно, что вы пытаетесь создать древовидную структуру данных, в которой узел может иметь несколько дочерних элементов.Вам необходимо спроектировать свой класс Instance, который может обрабатывать несколько дочерних элементов в узле.Попробуйте использовать список экземпляров для обработки дочерних элементов.

Ваш класс будет выглядеть так:

class Instance {
  private String name;
  private String description;
  private int type;
  List<Instance> children;
}

Попробуйте разбить входную строку и выполнить итерацию по каждой подстроке, проверьте, есть ли у вас объект Instanceс именем.Если нет, вы создадите новый объект Instance.Предыдущий элемент из вашей разделенной строки необходимо изменить, чтобы добавить текущий узел в качестве его дочернего элемента.

Например, если вы разбили "A/B/C" и выполните итерации по нему.

Для A, Первый элемент - так что это корень, проверьте, создан ли Instance объект для A, если нет, то создайте A.Сохраните A в переменной temp, чтобы изменить A позже.

Для B, temp содержит ссылку A, проверьте, создан ли объект Instance для B, если нет, то создайте B.Измените temp s children, чтобы добавить B в список, пусть temp содержит ссылку B

Для C, temp содержит ссылку B,проверьте, создан ли Instance объект для C, если нет, то создайте C.Измените temp children, чтобы добавить C в список, пусть temp содержит ссылку C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...