Package xyz.cofe.iter

Class TreeIterator<A>

  • Type Parameters:
    A - тип узла дерева
    All Implemented Interfaces:
    Iterator<TreeStep<A>>

    public class TreeIterator<A>
    extends Object
    implements Iterator<TreeStep<A>>
    Итератор по дереву
    • Constructor Detail

      • TreeIterator

        public TreeIterator​(Iterable<? extends A> init,
                            Function<A,​Iterable<? extends A>> follow)
        Конструктор
        Parameters:
        init - начальный узел
        follow - функция перехода к дочерним узлам
      • TreeIterator

        public TreeIterator​(Iterable<? extends A> init,
                            Function<A,​Iterable<? extends A>> follow,
                            Function<List<TreeStep<A>>,​TreeStep<A>> poll,
                            Consumer<TreeIterator.PushStep<A>> push)
        Конструктор
        Parameters:
        init - начальный узел
        follow - функция перехода к дочерним узлам
        poll - функция выбора узла из рабочего набора узлов
        push - функция помещения очередного узла в рабочий набор
      • TreeIterator

        public TreeIterator​(Iterable<? extends A> init,
                            Function<A,​Iterable<? extends A>> follow,
                            Function<List<TreeStep<A>>,​TreeStep<A>> poll,
                            Consumer<TreeIterator.PushStep<A>> push,
                            Predicate<TreeStep<A>> allow)
        Конструктор
        Parameters:
        init - начальный узел
        follow - функция перехода к дочерним узлам
        poll - функция выбора узла из рабочего набора узлов
        push - функция помещения очередного узла в рабочий набор
        allow - функция проверки допустимости перехода к указанному узлу
      • TreeIterator

        public TreeIterator​(A init,
                            Function<A,​Iterable<? extends A>> follow)
        Конструктор
        Parameters:
        init - начальный узел
        follow - функция перехода к дочерним узлам
      • TreeIterator

        public TreeIterator​(A init,
                            Function<A,​Iterable<? extends A>> follow,
                            Function<List<TreeStep<A>>,​TreeStep<A>> poll,
                            Consumer<TreeIterator.PushStep<A>> push)
        Конструктор
        Parameters:
        init - начальный узел
        follow - функция перехода к дочерним узлам
        poll - функция выбора узла из рабочего набора узлов
        push - функция помещения очередного узла в рабочий набор
      • TreeIterator

        public TreeIterator​(A init,
                            Function<A,​Iterable<? extends A>> follow,
                            Function<List<TreeStep<A>>,​TreeStep<A>> poll,
                            Consumer<TreeIterator.PushStep<A>> push,
                            Predicate<TreeStep<A>> allow)
        Конструктор
        Parameters:
        init - начальный узел
        follow - функция перехода к дочерним узлам
        poll - (nullable) функция выбора узла из рабочего набора узлов
        push - (nullable) функция помещения очередного узла в рабочий набор
        allow - (nullable) функция проверки допустимости перехода к указанному узлу
      • TreeIterator

        public TreeIterator​(A init,
                            Function<A,​Iterable<? extends A>> follow,
                            Function<List<TreeStep<A>>,​TreeStep<A>> poll,
                            Consumer<TreeIterator.PushStep<A>> push,
                            Predicate<TreeStep<A>> allow,
                            Object syncObj)
        Конструктор
        Parameters:
        init - начальный узел
        follow - функция перехода к дочерним узлам
        poll - (nullable) функция выбора узла из рабочего набора узлов
        push - (nullable) функция помещения очередного узла в рабочий набор
        allow - (nullable) функция проверки допустимости перехода к указанному узлу
        syncObj - (nullable) объект который используеться для синхронизации workset
      • TreeIterator

        public TreeIterator​(A init,
                            Function<A,​Iterable<? extends A>> follow,
                            Function<List<TreeStep<A>>,​TreeStep<A>> poll,
                            Consumer<TreeIterator.PushStep<A>> push,
                            Predicate<TreeStep<A>> allow,
                            Object syncObj,
                            Function<Supplier<Object>,​Object> syncWs)
        Конструктор
        Parameters:
        init - начальный узел
        follow - функция перехода к дочерним узлам
        poll - (nullable) функция выбора узла из рабочего набора узлов
        push - (nullable) функция помещения очередного узла в рабочий набор
        allow - (nullable) функция проверки допустимости перехода к указанному узлу
        syncObj - (nullable) объект который используеться для синхронизации workset
        syncWs - (nullable) функция синхронизации
    • Method Detail

      • of

        public static <A> Eterable<TreeStep<A>> of​(Iterable<? extends A> init,
                                                   Function<A,​Iterable<? extends A>> follow)
        Конструктор
        Type Parameters:
        A - тип узлов
        Parameters:
        init - начальный узел
        follow - функция перехода к дочерним узлам
        Returns:
        итератор
      • of

        public static <A> Eterable<TreeStep<A>> of​(Iterable<? extends A> init,
                                                   Function<A,​Iterable<? extends A>> follow,
                                                   Function<List<TreeStep<A>>,​TreeStep<A>> poll,
                                                   Consumer<TreeIterator.PushStep<A>> push)
        Конструктор
        Type Parameters:
        A - тип узлов
        Parameters:
        init - начальный узел
        follow - функция перехода к дочерним узлам
        poll - функция выбора узла из рабочего набора узлов
        push - функция помещения очередного узла в рабочий набор
        Returns:
        итератор
      • of

        public static <A> Eterable<TreeStep<A>> of​(A init,
                                                   Function<A,​Iterable<? extends A>> follow)
        Конструктор
        Type Parameters:
        A - тип узлов
        Parameters:
        init - начальный узел
        follow - функция перехода к дочерним узлам
        Returns:
        итератор
      • of

        public static <A> Eterable<TreeStep<A>> of​(A init,
                                                   Function<A,​Iterable<? extends A>> follow,
                                                   Function<List<TreeStep<A>>,​TreeStep<A>> poll,
                                                   Consumer<TreeIterator.PushStep<A>> push)
        Конструктор
        Type Parameters:
        A - тип узлов
        Parameters:
        init - начальный узел
        follow - функция перехода к дочерним узлам
        poll - функция выбора узла из рабочего набора узлов
        push - функция помещения очередного узла в рабочий набор
        Returns:
        итератор
      • hasNext

        public boolean hasNext()
        Specified by:
        hasNext in interface Iterator<A>
      • syncWorkset

        protected <R> R syncWorkset​(Supplier<R> code)
      • syncWorkset

        protected void syncWorkset​(Runnable code)
      • pollFirst

        public static <A> Function<List<TreeStep<A>>,​TreeStep<A>> pollFirst()
        Создает функцию для извлечения первого узла из очереди
        Type Parameters:
        A - Тип узла дерева
        Returns:
        функция извлечения
      • pollLast

        public static <A> Function<List<TreeStep<A>>,​TreeStep<A>> pollLast()
        Создает функцию для извлечения последнего узла из очереди
        Type Parameters:
        A - Тип узла дерева
        Returns:
        функция извлечения
      • pushLast

        public static <A> Consumer<TreeIterator.PushStep<A>> pushLast()
        Создает функцию для добвления узлов в конец очереди обработки
        Type Parameters:
        A - Тип узла дерева
        Returns:
        функция вставки
      • pushFirst

        public static <A> Consumer<TreeIterator.PushStep<A>> pushFirst()
        Создает функцию для добвления узлов в начало очереди обработки
        Type Parameters:
        A - Тип узла дерева
        Returns:
        функция вставки
      • pushOrdered

        public static <A> Consumer<TreeIterator.PushStep<A>> pushOrdered()
        Создает фуркцию для добавления узлов в очередь обратки, согласно порядку следования
        Type Parameters:
        A - Тип узла дерева
        Returns:
        функция вставки
      • checkCycles

        public static <A> Predicate<TreeStep<A>> checkCycles()
        Создает фильтр, который не допускает наличие циклов при проходе по дереву
        Type Parameters:
        A - Тип узла дерева
        Returns:
        фильтр