Class TreeReversePostOrderIterable<TItem,​TIdentifier>

  • Type Parameters:
    TItem - Type of the items in the tree.
    TIdentifier - Type of the identifier that identifiers the items in the tree.
    All Implemented Interfaces:
    Iterable<TItem>

    public final class TreeReversePostOrderIterable<TItem,​TIdentifier>
    extends Object
    implements Iterable<TItem>
    An iterable that iterates over a tree-like graph in reverse post order, starting at a given node. Throws an exception in case the graph is not a tree, thus also preventing endless cycles when the graph is cyclic.
    Since:
    8.2.0
    Author:
    XIMA MEDIA GmbH
    • Constructor Detail

      • TreeReversePostOrderIterable

        public TreeReversePostOrderIterable​(Iterable<TItem> startItems,
                                            ITreeAccessor<TItem,​TIdentifier> treeAccessor)
        Returns a new iterable over the items in the tree starting at the given item.
        Parameters:
        startItems - Root items where to start the traversal. These items are included in the traversal.
        treeAccessor - Handler for accessing the children of a node, and its identifier
      • TreeReversePostOrderIterable

        public TreeReversePostOrderIterable​(Iterable<TItem> startItems,
                                            ITreeAccessor<TItem,​TIdentifier> treeAccessor,
                                            boolean limitRecursion)
        Returns a new iterable over the items in the tree starting at the given item.
        Parameters:
        startItems - Root items where to start the traversal. These items are included in the traversal.
        treeAccessor - Handler for accessing the children of a node, and its identifier
        limitRecursion - If true, stops iterating when an item is encountered for the second time (as determined by Object.hashCode(), Object.equals(Object)) and throws an IllegalStateException.
      • TreeReversePostOrderIterable

        public TreeReversePostOrderIterable​(TItem startItem,
                                            ITreeAccessor<TItem,​TIdentifier> treeAccessor)
        Returns a new iterable over the items in the tree starting at the given item.
        Parameters:
        startItem - Item where to start the traversal. This item is included in the traversal.
        treeAccessor - Handler for accessing the children of a node, and its identifier
      • TreeReversePostOrderIterable

        public TreeReversePostOrderIterable​(TItem startItem,
                                            ITreeAccessor<TItem,​TIdentifier> treeAccessor,
                                            boolean limitRecursion)
        Returns a new iterable over the items in the tree starting at the given item.
        Parameters:
        startItem - Item where to start the traversal. This item is included in the traversal.
        treeAccessor - Handler for accessing the children of a node, and its identifier
        limitRecursion - If true, stops iterating when an item is encountered for the second time (as determined by Object.hashCode(), Object.equals(Object)) and throws an IllegalStateException.
    • Method Detail

      • toList

        public static <TItem> List<TItem> toList​(TItem startItem,
                                                 ITreeAccessor<TItem,​?> treeAccessor)
        Iterates over the node and its children, and returns a list of all iterated nodes.
        Type Parameters:
        TItem - Type of the items in the tree.
        Parameters:
        startItem - Node where to start the traversal. This item is included in the returned list.
        treeAccessor - Handler for accessing the children of a node, and its identifier.
        Returns:
        A list with the given start item and all its children.