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 classTreeIterator.PushStep<A>Данные для вставки узла в список рабочих узлов -
Field Summary
Fields Modifier and Type Field Description protected java.util.function.Predicate<TreeStep<A>>allowprotected java.util.function.Function<A,java.lang.Iterable<? extends A>>followprotected java.util.function.Function<java.util.List<TreeStep<A>>,TreeStep<A>>pollprotected java.util.function.Consumer<TreeIterator.PushStep<A>>pushprotected java.util.function.Function<java.util.function.Supplier<java.lang.Object>,java.lang.Object>syncWorksetprotected java.lang.ObjectsyncWorksetObjectprotected 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()booleanhasNext()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()Создает фуркцию для добавления узлов в очередь обратки, согласно порядку следованияvoidsetSyncWorkset(java.util.function.Function<java.util.function.Supplier<java.lang.Object>,java.lang.Object> syncWorkset)protected voidsyncWorkset(java.lang.Runnable code)protected <R> RsyncWorkset(java.util.function.Supplier<R> code)
-
Field Details
-
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
-
poll
-
push
-
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) объект который используеться для синхронизации worksetsyncWs- (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:
hasNextin interfacejava.util.Iterator<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
Создает функцию для извлечения первого узла из очереди- Type Parameters:
A- Тип узла дерева- Returns:
- функция извлечения
-
pollLast
Создает функцию для извлечения последнего узла из очереди- Type Parameters:
A- Тип узла дерева- Returns:
- функция извлечения
-
pushLast
Создает функцию для добвления узлов в конец очереди обработки- Type Parameters:
A- Тип узла дерева- Returns:
- функция вставки
-
pushFirst
Создает функцию для добвления узлов в начало очереди обработки- Type Parameters:
A- Тип узла дерева- Returns:
- функция вставки
-
pushOrdered
Создает фуркцию для добавления узлов в очередь обратки, согласно порядку следования- Type Parameters:
A- Тип узла дерева- Returns:
- функция вставки
-
checkCycles
Создает фильтр, который не допускает наличие циклов при проходе по дереву- Type Parameters:
A- Тип узла дерева- Returns:
- фильтр
-
next
- Specified by:
nextin interfacejava.util.Iterator<A>
-