Class MutableTree<SELF extends MutableTree<SELF>>

  • Type Parameters:
    SELF - Собыственный тип дерева (в дочерних класса должен содержать сам класс)
    All Implemented Interfaces:
    GetTreeParent<SELF>, ImTree<SELF>, ImTreeWalk<SELF>, Tree<SELF>, TreeNotify<SELF>, UpTree<SELF>

    public abstract class MutableTree<SELF extends MutableTree<SELF>>
    extends Object
    implements Tree<SELF>, GetTreeParent<SELF>, UpTree<SELF>
    Мутериуемое дерево
    • Constructor Detail

      • MutableTree

        public MutableTree()
    • Method Detail

      • getNodesCount

        public int getNodesCount()
        Возвращает кол-во дочерних узлов включая вложенные
        Returns:
        кол-во дочерних узлов
      • setNodesCount

        public void setNodesCount​(Integer count)
        Указывает кол-во дочерних узлов включая вложенные
        Parameters:
        count - кол-во дочерних узлов
      • listen

        public <EV extends TreeEvent<SELF>> AutoCloseable listen​(Class<EV> eventClass,
                                                                 Consumer<EV> listener)
        Добавляет подписчика на события изменения дерева
        Specified by:
        listen in interface TreeNotify<SELF extends MutableTree<SELF>>
        Type Parameters:
        EV - тип события
        Parameters:
        eventClass - класс событий
        listener - подписчик
        Returns:
        отписка от уведомлений
      • addTreeListener

        public AutoCloseable addTreeListener​(boolean weak,
                                             TreeEvent.Listener<SELF> ls)
        Добавляет подписчика на события изменения дерева
        Specified by:
        addTreeListener in interface TreeNotify<SELF extends MutableTree<SELF>>
        Parameters:
        ls - подписчик
        weak - true - добавить подписчика как weak ссылку
        Returns:
        отписка от уведомлений
      • getSibIndex

        public int getSibIndex()
        Возвращает индекс узла в списке дочерних узлов по отношению к родителю
        Specified by:
        getSibIndex in interface UpTree<SELF extends MutableTree<SELF>>
        Returns:
        индекс или -1
      • sibling

        public SELF sibling​(int offset)
        Переходит соседнему узлу
        Specified by:
        sibling in interface UpTree<SELF extends MutableTree<SELF>>
        Parameters:
        offset - смещение от текущего
        Returns:
        узел или null
      • getPreviousSibling

        public SELF getPreviousSibling()
        Возвращает следующий соседний узел
        Specified by:
        getPreviousSibling in interface UpTree<SELF extends MutableTree<SELF>>
        Returns:
        Узел или null в случаи достижения края
      • getNextSibling

        public SELF getNextSibling()
        Возвращает следующий соседний узел
        Specified by:
        getNextSibling in interface UpTree<SELF extends MutableTree<SELF>>
        Returns:
        Узел или null в случаи достижения края
      • setParent

        public void setParent​(SELF parent)
        Укзывает родитеский узлер текущего узла
        Specified by:
        setParent in interface UpTree<SELF extends MutableTree<SELF>>
        Parameters:
        parent - родитеский узлер текущего узла
      • compareAndSetParent

        public boolean compareAndSetParent​(SELF parent,
                                           SELF newparent)
        Устанавливает новый родительский узел, если текущий узел совпадает с указаным
        Specified by:
        compareAndSetParent in interface UpTree<SELF extends MutableTree<SELF>>
        Parameters:
        parent - проверяемый
        newparent - новое значение
        Returns:
        true - значение установлено, false - проверяемый и фактический родительские узелы не совпадают
      • children

        public List<SELF> children()
        Возвращает список дочерних узлов
        Returns:
        список дочерних узлов
      • count

        public int count()
        Возвращает кол-во дочерних узлов
        Specified by:
        count in interface Tree<SELF extends MutableTree<SELF>>
        Returns:
        кол-во дочерних узлов
      • get

        public SELF get​(int idx)
        Возвращает дочерний элемент по его индексу
        Specified by:
        get in interface Tree<SELF extends MutableTree<SELF>>
        Parameters:
        idx - индекс дочернего элемента
        Returns:
        дочерний элемент
      • insert

        public void insert​(int idx,
                           SELF node)
        Добавляет дочерний узел
        Specified by:
        insert in interface Tree<SELF extends MutableTree<SELF>>
        Specified by:
        insert in interface UpTree<SELF extends MutableTree<SELF>>
        Parameters:
        idx - индекс в какую позицию будет добавлен узел
        node - узел
      • inserts

        public void inserts​(int idx,
                            SELF... nodes)
        Добавляет дочерние узлы
        Specified by:
        inserts in interface Tree<SELF extends MutableTree<SELF>>
        Specified by:
        inserts in interface UpTree<SELF extends MutableTree<SELF>>
        Parameters:
        idx - индекс в какую позицию будет добавлены узлы
        nodes - дочерние узлы
      • inserts

        public void inserts​(int idx,
                            Iterable<SELF> nodes)
        Добавляет дочерние узлы
        Specified by:
        inserts in interface Tree<SELF extends MutableTree<SELF>>
        Specified by:
        inserts in interface UpTree<SELF extends MutableTree<SELF>>
        Parameters:
        idx - индекс в какую позицию будет добавлены узлы
        nodes - дочерние узлы
      • removes

        public void removes​(List<Integer> indexes,
                            boolean mutateIndexes)
        Удаляет дочерние узлы
        Parameters:
        indexes - индексы узлов
        mutateIndexes - true - модифицирует исходный список индексов / false - создает копию исходного списка
      • clear

        public void clear()
        Удаляет дочерние узлы
        Specified by:
        clear in interface Tree<SELF extends MutableTree<SELF>>
      • level

        public int level()
        Возвращает вложенность узла начиная от корня
        Specified by:
        level in interface UpTree<SELF extends MutableTree<SELF>>
        Returns:
        уровень, 0 - корень