Class PartiallyOrderedSet<E>
- Type Parameters:
E- Element type
- All Implemented Interfaces:
Iterable<E>,Collection<E>,Set<E>
When you create a partially-ordered set ('poset' for short) you must
provide an PartiallyOrderedSet.Ordering that determines the order relation. The
ordering must be:
- reflexive: e.lte(e) returns true;
- anti-symmetric: if e.lte(f) returns true, then f.lte(e) returns false only if e = f;
- transitive: if e.lte(f) returns true and f.lte(g) returns true, then e.lte(g) must return true.
Note that not all pairs of elements are related. If is OK if e.lte(f) returns false and f.lte(e) returns false also.
In addition to the usual set methods, there are methods to determine the immediate parents and children of an element in the set, and method to find all elements which have no parents or no children (i.e. "root" and "leaf" elements).
A lattice is a special kind of poset where there is a unique top and bottom element. You can use a PartiallyOrderedSet for a lattice also. It may be helpful to add the top and bottom elements to the poset on construction.
- Author:
- Julian Hyde
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceOrdering relation. -
Constructor Summary
ConstructorsConstructorDescriptionPartiallyOrderedSet(PartiallyOrderedSet.Ordering<E> ordering) Creates a partially-ordered set.PartiallyOrderedSet(PartiallyOrderedSet.Ordering<E> ordering, Collection<E> collection) Creates a partially-ordered set, and populates it with a given collection. -
Method Summary
Modifier and TypeMethodDescriptionbooleanAdds an element to this lattice.voidclear()booleangetAncestors(E e) Returns a list of values in the set that are less-than a given value.getChildren(E e) Returns the values in this partially-ordered set that are less-than a given value and there are no intervening values.getDescendants(E e) Returns a list of values in the set that are less-than a given value.getParents(E e) Returns the values in this partially-ordered set that are greater-than a given value and there are no intervening values.booleanisValid(boolean fail) Checks internal consistency of this lattice.iterator()voidout(StringBuilder buf) booleanintsize()Methods inherited from class java.util.AbstractSet
equals, hashCode, removeAllMethods inherited from class java.util.AbstractCollection
addAll, containsAll, isEmpty, retainAll, toArray, toArray, toStringMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface java.util.Collection
parallelStream, removeIf, stream, toArrayMethods inherited from interface java.util.Set
addAll, containsAll, isEmpty, retainAll, spliterator, toArray, toArray
-
Constructor Details
-
PartiallyOrderedSet
Creates a partially-ordered set.- Parameters:
ordering- Ordering relation
-
PartiallyOrderedSet
Creates a partially-ordered set, and populates it with a given collection.- Parameters:
ordering- Ordering relationcollection- Initial contents of partially-ordered set
-
-
Method Details
-
iterator
-
size
public int size()- Specified by:
sizein interfaceCollection<E>- Specified by:
sizein interfaceSet<E>- Specified by:
sizein classAbstractCollection<E>
-
contains
- Specified by:
containsin interfaceCollection<E>- Specified by:
containsin interfaceSet<E>- Overrides:
containsin classAbstractCollection<E>
-
remove
- Specified by:
removein interfaceCollection<E>- Specified by:
removein interfaceSet<E>- Overrides:
removein classAbstractCollection<E>
-
add
Adds an element to this lattice.- Specified by:
addin interfaceCollection<E>- Specified by:
addin interfaceSet<E>- Overrides:
addin classAbstractCollection<E>
-
isValid
public boolean isValid(boolean fail) Checks internal consistency of this lattice.- Parameters:
fail- Whether to throw an assertion error- Returns:
- Whether valid
-
out
-
getChildren
Returns the values in this partially-ordered set that are less-than a given value and there are no intervening values.If the value is not in this set, returns the empty list.
- Parameters:
e- Value- Returns:
- List of values in this set that are directly less than the given value
- See Also:
-
getParents
Returns the values in this partially-ordered set that are greater-than a given value and there are no intervening values.If the value is not in this set, returns the empty list.
- Parameters:
e- Value- Returns:
- List of values in this set that are directly greater than the given value
- See Also:
-
getNonChildren
-
getNonParents
-
clear
public void clear()- Specified by:
clearin interfaceCollection<E>- Specified by:
clearin interfaceSet<E>- Overrides:
clearin classAbstractCollection<E>
-
getDescendants
Returns a list of values in the set that are less-than a given value. The list is in topological order but order is otherwise non-deterministic.- Parameters:
e- Value- Returns:
- Values less than given value
-
getAncestors
Returns a list of values in the set that are less-than a given value. The list is in topological order but order is otherwise non-deterministic.- Parameters:
e- Value- Returns:
- Values less than given value
-