Package xyz.cofe.iter

Class TreeIterator<A>

java.lang.Object
xyz.cofe.iter.TreeIterator<A>
Type Parameters:
A - тип узла дерева
All Implemented Interfaces:
java.util.Iterator<TreeStep<A>>

public class TreeIterator<A>
extends java.lang.Object
implements java.util.Iterator<TreeStep<A>>
Итератор по дереву
  • Nested Class Summary

    Nested Classes 
    Modifier and Type Class Description
    static class  TreeIterator.PushStep<A>
    Данные для вставки узла в список рабочих узлов
  • Field Summary

    Fields 
    Modifier and Type Field Description
    protected java.util.function.Predicate<TreeStep<A>> allow  
    protected java.util.function.Function<A,​java.lang.Iterable<? extends A>> follow  
    protected java.util.function.Function<java.util.List<TreeStep<A>>,​TreeStep<A>> poll  
    protected java.util.function.Consumer<TreeIterator.PushStep<A>> push  
    protected java.util.function.Function<java.util.function.Supplier<java.lang.Object>,​java.lang.Object> syncWorkset  
    protected java.lang.Object syncWorksetObject  
    protected java.util.List<TreeStep<A>> worksetInstance  
  • Constructor Summary

    Constructors 
    Constructor Description
    TreeIterator​(A init, java.util.function.Function<A,​java.lang.Iterable<? extends A>> follow)
    Конструктор
    TreeIterator​(A init, java.util.function.Function<A,​java.lang.Iterable<? extends A>> follow, java.util.function.Function<java.util.List<TreeStep<A>>,​TreeStep<A>> poll, java.util.function.Consumer<TreeIterator.PushStep<A>> push)
    Конструктор
    TreeIterator​(A init, java.util.function.Function<A,​java.lang.Iterable<? extends A>> follow, java.util.function.Function<java.util.List<TreeStep<A>>,​TreeStep<A>> poll, java.util.function.Consumer<TreeIterator.PushStep<A>> push, java.util.function.Predicate<TreeStep<A>> allow)
    Конструктор
    TreeIterator​(A init, java.util.function.Function<A,​java.lang.Iterable<? extends A>> follow, java.util.function.Function<java.util.List<TreeStep<A>>,​TreeStep<A>> poll, java.util.function.Consumer<TreeIterator.PushStep<A>> push, java.util.function.Predicate<TreeStep<A>> allow, java.lang.Object syncObj)
    Конструктор
    TreeIterator​(A init, java.util.function.Function<A,​java.lang.Iterable<? extends A>> follow, java.util.function.Function<java.util.List<TreeStep<A>>,​TreeStep<A>> poll, java.util.function.Consumer<TreeIterator.PushStep<A>> push, java.util.function.Predicate<TreeStep<A>> allow, java.lang.Object syncObj, java.util.function.Function<java.util.function.Supplier<java.lang.Object>,​java.lang.Object> syncWs)
    Конструктор
    TreeIterator​(java.lang.Iterable<? extends A> init, java.util.function.Function<A,​java.lang.Iterable<? extends A>> follow)
    Конструктор
    TreeIterator​(java.lang.Iterable<? extends A> init, java.util.function.Function<A,​java.lang.Iterable<? extends A>> follow, java.util.function.Function<java.util.List<TreeStep<A>>,​TreeStep<A>> poll, java.util.function.Consumer<TreeIterator.PushStep<A>> push)
    Конструктор
    TreeIterator​(java.lang.Iterable<? extends A> init, java.util.function.Function<A,​java.lang.Iterable<? extends A>> follow, java.util.function.Function<java.util.List<TreeStep<A>>,​TreeStep<A>> poll, java.util.function.Consumer<TreeIterator.PushStep<A>> push, java.util.function.Predicate<TreeStep<A>> allow)
    Конструктор
  • Method Summary

    Modifier and Type Method Description
    static <A> java.util.function.Predicate<TreeStep<A>> checkCycles()
    Создает фильтр, который не допускает наличие циклов при проходе по дереву
    java.util.function.Function<java.util.function.Supplier<java.lang.Object>,​java.lang.Object> getSyncWorkset()  
    protected java.util.List<TreeStep<A>> getWorkset()  
    boolean hasNext()  
    TreeStep<A> next()  
    static <A> Eterable<TreeStep<A>> of​(A init, java.util.function.Function<A,​java.lang.Iterable<? extends A>> follow)
    Конструктор
    static <A> Eterable<TreeStep<A>> of​(A init, java.util.function.Function<A,​java.lang.Iterable<? extends A>> follow, java.util.function.Function<java.util.List<TreeStep<A>>,​TreeStep<A>> poll, java.util.function.Consumer<TreeIterator.PushStep<A>> push)
    Конструктор
    static <A> Eterable<TreeStep<A>> of​(java.lang.Iterable<? extends A> init, java.util.function.Function<A,​java.lang.Iterable<? extends A>> follow)
    Конструктор
    static <A> Eterable<TreeStep<A>> of​(java.lang.Iterable<? extends A> init, java.util.function.Function<A,​java.lang.Iterable<? extends A>> follow, java.util.function.Function<java.util.List<TreeStep<A>>,​TreeStep<A>> poll, java.util.function.Consumer<TreeIterator.PushStep<A>> push)
    Конструктор
    static <A> java.util.function.Function<java.util.List<TreeStep<A>>,​TreeStep<A>> pollFirst()
    Создает функцию для извлечения первого узла из очереди
    static <A> java.util.function.Function<java.util.List<TreeStep<A>>,​TreeStep<A>> pollLast()
    Создает функцию для извлечения последнего узла из очереди
    static <A> java.util.function.Consumer<TreeIterator.PushStep<A>> pushFirst()
    Создает функцию для добвления узлов в начало очереди обработки
    static <A> java.util.function.Consumer<TreeIterator.PushStep<A>> pushLast()
    Создает функцию для добвления узлов в конец очереди обработки
    static <A> java.util.function.Consumer<TreeIterator.PushStep<A>> pushOrdered()
    Создает фуркцию для добавления узлов в очередь обратки, согласно порядку следования
    void setSyncWorkset​(java.util.function.Function<java.util.function.Supplier<java.lang.Object>,​java.lang.Object> syncWorkset)  
    protected void syncWorkset​(java.lang.Runnable code)  
    protected <R> R syncWorkset​(java.util.function.Supplier<R> code)  

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface java.util.Iterator

    forEachRemaining, remove
  • Field Details

    • worksetInstance

      protected volatile java.util.List<TreeStep<A>> worksetInstance
    • syncWorksetObject

      protected volatile java.lang.Object syncWorksetObject
    • syncWorkset

      protected volatile java.util.function.Function<java.util.function.Supplier<java.lang.Object>,​java.lang.Object> syncWorkset
    • follow

      protected final java.util.function.Function<A,​java.lang.Iterable<? extends A>> follow
    • poll

      protected final java.util.function.Function<java.util.List<TreeStep<A>>,​TreeStep<A>> poll
    • push

      protected final java.util.function.Consumer<TreeIterator.PushStep<A>> push
    • allow

      protected final java.util.function.Predicate<TreeStep<A>> allow
  • Constructor Details

    • TreeIterator

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

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

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

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

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

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

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

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

    • of

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

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

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

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

      public boolean hasNext()
      Specified by:
      hasNext in interface java.util.Iterator<A>
    • getWorkset

      protected java.util.List<TreeStep<A>> getWorkset()
    • getSyncWorkset

      public java.util.function.Function<java.util.function.Supplier<java.lang.Object>,​java.lang.Object> getSyncWorkset()
    • setSyncWorkset

      public void setSyncWorkset​(java.util.function.Function<java.util.function.Supplier<java.lang.Object>,​java.lang.Object> syncWorkset)
    • syncWorkset

      protected <R> R syncWorkset​(java.util.function.Supplier<R> code)
    • syncWorkset

      protected void syncWorkset​(java.lang.Runnable code)
    • pollFirst

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

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

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

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

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

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

      public TreeStep<A> next()
      Specified by:
      next in interface java.util.Iterator<A>