Package ai.libs.jaicore.basic.sets
Class SetUtil
- java.lang.Object
-
- ai.libs.jaicore.basic.sets.SetUtil
-
public class SetUtil extends java.lang.Object
Utility class for sets.
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static <T> java.util.List<T>
addAndGet(java.util.List<T> list, T item)
static <K,V>
java.util.Set<java.util.Map<K,V>>allFuntionsFromFunctionallyDenotedRelation(java.util.Map<K,java.util.Collection<V>> pRelation)
static <K,V>
java.util.Collection<java.util.Map<K,V>>allMappings(java.util.Collection<K> domain, java.util.Collection<V> range, boolean totalsOnly, boolean injectivesOnly, boolean surjectivesOnly)
static <K,V>
java.util.Collection<java.util.Map<K,V>>allPartialMappings(java.util.Collection<K> domain, java.util.Collection<V> range)
static <K,V>
java.util.Set<java.util.Map<K,V>>allTotalAndInjectiveMappingsWithConstraint(java.util.Collection<K> domain, java.util.Collection<V> range, java.util.function.Predicate<java.util.Map<K,V>> pPredicate)
Computes all total mappings that satisfy some given predicate.static <K,V>
java.util.Collection<java.util.Map<K,V>>allTotalMappings(java.util.Collection<K> domain, java.util.Collection<V> range)
static <K,V>
java.util.Set<java.util.Map<K,V>>allTotalMappingsWithLocalConstraints(java.util.Collection<K> domain, java.util.Collection<V> range, java.util.function.Predicate<Pair<K,V>> pPredicate)
static int
calculateNumberOfTotalOrderings(PartialOrderedSet<?> set)
static <S> java.util.Collection<java.util.List<S>>
cartesianProduct(java.util.Collection<S> set, int number)
static <S,T>
java.util.Collection<Pair<S,T>>cartesianProduct(java.util.Collection<S> a, java.util.Collection<T> b)
static <T> java.util.Collection<java.util.List<T>>
cartesianProduct(java.util.List<? extends java.util.Collection<T>> listOfSets)
static <S,T extends S,U extends S>
java.util.Collection<S>difference(java.util.Collection<T> a, java.util.Collection<U> b)
static <S,T extends S,U extends S>
java.util.List<S>difference(java.util.List<T> a, java.util.Collection<U> b)
static <S,T extends S,U extends S>
booleandifferenceEmpty(java.util.Collection<T> a, java.util.Collection<U> b)
static <S,T extends S,U extends S>
booleandifferenceNotEmpty(java.util.Collection<T> a, java.util.Collection<U> b)
static <S,T extends S,U extends S>
booleandisjoint(java.util.Collection<T> a, java.util.Collection<U> b)
static boolean
doesStringCollectionOnlyContainNumbers(java.util.Collection<java.lang.String> strings)
static java.util.List<java.lang.String>
explode(java.lang.String stringList)
Splits a string into multiple strings using "," as a separator and returns the result as a list.static java.util.List<java.lang.String>
explode(java.lang.String stringList, java.lang.String separator)
Splits a string into multiple strings by the given separator and returns the result as a list.static <T> java.util.Collection<java.util.Collection<T>>
getAllPossibleSubsets(java.util.Collection<T> items)
static <T> java.util.List<java.util.Set<T>>
getAllPossibleSubsetsWithSize(java.util.Collection<T> superSet, int k)
static <T> java.util.List<java.util.Set<T>>
getAllPossibleSubsetsWithSizeParallely(java.util.Collection<T> superSet, int k)
static <E> java.util.Collection<java.util.List<E>>
getAllTotalOrderings(PartialOrderedSet<E> set)
static <T> java.util.Collection<java.util.Collection<T>>
getCartesianProductOfSetsOfSameClass(java.util.Collection<java.util.Collection<T>> items)
static <S,T extends S,U extends S>
java.util.Collection<S>getDisjointSet(java.util.Collection<T> a, java.util.Collection<U> b)
Computes the set of elements which are disjoint, i.e., elements from the set (A \cup B) \ (A \cap B)static java.lang.reflect.Type
getGenericClass(java.util.Collection<?> c)
static <T> java.util.List<T>
getInvertedCopyOfList(java.util.List<T> list)
static <T> java.util.Collection<T>
getMultiplyContainedItems(java.util.List<T> list)
static <T> java.util.Collection<java.util.List<T>>
getPermutations(java.util.Collection<T> set)
static <T> java.util.Collection<java.util.Collection<T>>
getPotenceOfSet(java.util.Collection<T> set, byte exponent)
static <T> T
getRandomElement(java.util.Collection<T> set, long seed)
static <T,U>
java.util.Map<U,java.util.Collection<T>>groupCollectionByAttribute(java.util.Collection<T> collection, org.api4.java.common.attributedobjects.IGetter<T,U> getter)
static java.lang.String
implode(java.util.Collection<? extends java.lang.Object> collection, java.lang.String separator)
Concatenates toString representations of objects separated by the given separator to a single string.static <S,T extends S,U extends S>
java.util.Collection<S>intersection(java.util.Collection<T> a, java.util.Collection<U> b)
static <K,V extends java.lang.Comparable<V>>
java.util.List<K>keySetSortedByValues(java.util.Map<K,V> map, boolean asc)
static <T extends java.lang.Comparable<T>>
java.util.List<T>mergeSort(java.util.Collection<T> set)
static <T> java.util.Collection<java.util.Collection<T>>
powerset(java.util.Collection<T> items)
static <K,V>
java.util.Collection<Pair<K,V>>relation(java.util.Collection<K> keys, java.util.Collection<V> values, java.util.function.Predicate<Pair<K,V>> relationPredicate)
static <K,V>
java.util.Map<K,java.util.Collection<V>>relationAsFunction(java.util.Collection<K> keys, java.util.Collection<V> values, java.util.function.Predicate<Pair<K,V>> relationPredicate)
static java.lang.String
serializeAsSet(java.util.Collection<java.lang.String> set)
static <T> void
shuffle(java.util.List<T> list, long seed)
static <T> java.util.Collection<java.util.Set<T>>
subsetsOfSize(java.util.Collection<T> set, int size)
static <T> java.util.Collection<T>
symmetricDifference(java.util.Collection<T> a, java.util.Collection<T> b)
static <T> java.util.Collection<T>
union(java.util.Collection<T>... set)
static <T> java.util.List<T>
union(java.util.List<T>... lists)
static org.apache.commons.math3.geometry.euclidean.oned.Interval
unserializeInterval(java.lang.String intervalDescriptor)
static java.util.List<java.lang.String>
unserializeList(java.lang.String listDescriptor)
static java.util.Set<java.lang.String>
unserializeSet(java.lang.String setDescriptor)
-
-
-
Method Detail
-
union
@SafeVarargs public static <T> java.util.Collection<T> union(java.util.Collection<T>... set)
-
union
public static <T> java.util.List<T> union(java.util.List<T>... lists)
-
symmetricDifference
public static <T> java.util.Collection<T> symmetricDifference(java.util.Collection<T> a, java.util.Collection<T> b)
-
getMultiplyContainedItems
public static <T> java.util.Collection<T> getMultiplyContainedItems(java.util.List<T> list)
-
intersection
public static <S,T extends S,U extends S> java.util.Collection<S> intersection(java.util.Collection<T> a, java.util.Collection<U> b)
- Parameters:
a
- The set A.b
- The set B.- Returns:
- The intersection of sets A and B.
-
disjoint
public static <S,T extends S,U extends S> boolean disjoint(java.util.Collection<T> a, java.util.Collection<U> b)
-
getPotenceOfSet
public static <T> java.util.Collection<java.util.Collection<T>> getPotenceOfSet(java.util.Collection<T> set, byte exponent)
-
getCartesianProductOfSetsOfSameClass
public static <T> java.util.Collection<java.util.Collection<T>> getCartesianProductOfSetsOfSameClass(java.util.Collection<java.util.Collection<T>> items)
-
powerset
public static <T> java.util.Collection<java.util.Collection<T>> powerset(java.util.Collection<T> items) throws java.lang.InterruptedException
- Throws:
java.lang.InterruptedException
-
getAllPossibleSubsets
public static <T> java.util.Collection<java.util.Collection<T>> getAllPossibleSubsets(java.util.Collection<T> items)
-
subsetsOfSize
public static <T> java.util.Collection<java.util.Set<T>> subsetsOfSize(java.util.Collection<T> set, int size) throws java.lang.InterruptedException
- Throws:
java.lang.InterruptedException
-
getAllPossibleSubsetsWithSizeParallely
public static <T> java.util.List<java.util.Set<T>> getAllPossibleSubsetsWithSizeParallely(java.util.Collection<T> superSet, int k) throws java.lang.InterruptedException
- Throws:
java.lang.InterruptedException
-
getAllPossibleSubsetsWithSize
public static <T> java.util.List<java.util.Set<T>> getAllPossibleSubsetsWithSize(java.util.Collection<T> superSet, int k)
-
getPermutations
public static <T> java.util.Collection<java.util.List<T>> getPermutations(java.util.Collection<T> set)
-
difference
public static <S,T extends S,U extends S> java.util.Collection<S> difference(java.util.Collection<T> a, java.util.Collection<U> b)
- Parameters:
a
- The set A.b
- The set B.- Returns:
- The difference A \ B.
-
getDisjointSet
public static <S,T extends S,U extends S> java.util.Collection<S> getDisjointSet(java.util.Collection<T> a, java.util.Collection<U> b)
Computes the set of elements which are disjoint, i.e., elements from the set (A \cup B) \ (A \cap B)- Parameters:
a
- The set A.b
- The set B.- Returns:
- The difference A \ B.
-
difference
public static <S,T extends S,U extends S> java.util.List<S> difference(java.util.List<T> a, java.util.Collection<U> b)
- Parameters:
a
- The set A.b
- The set B.- Returns:
- The difference A \ B.
-
differenceEmpty
public static <S,T extends S,U extends S> boolean differenceEmpty(java.util.Collection<T> a, java.util.Collection<U> b)
-
differenceNotEmpty
public static <S,T extends S,U extends S> boolean differenceNotEmpty(java.util.Collection<T> a, java.util.Collection<U> b)
-
cartesianProduct
public static <S,T> java.util.Collection<Pair<S,T>> cartesianProduct(java.util.Collection<S> a, java.util.Collection<T> b)
- Parameters:
a
- The set A.b
- The set B.- Returns:
- The Cartesian product A x B.
-
cartesianProduct
public static <T> java.util.Collection<java.util.List<T>> cartesianProduct(java.util.List<? extends java.util.Collection<T>> listOfSets)
- Parameters:
a
- The set A.b
- The set B.- Returns:
- The Cartesian product A x B.
-
cartesianProduct
public static <S> java.util.Collection<java.util.List<S>> cartesianProduct(java.util.Collection<S> set, int number) throws java.lang.InterruptedException
- Parameters:
a
- The set A.- Throws:
java.lang.InterruptedException
-
relation
public static <K,V> java.util.Collection<Pair<K,V>> relation(java.util.Collection<K> keys, java.util.Collection<V> values, java.util.function.Predicate<Pair<K,V>> relationPredicate)
-
relationAsFunction
public static <K,V> java.util.Map<K,java.util.Collection<V>> relationAsFunction(java.util.Collection<K> keys, java.util.Collection<V> values, java.util.function.Predicate<Pair<K,V>> relationPredicate)
-
allMappings
public static <K,V> java.util.Collection<java.util.Map<K,V>> allMappings(java.util.Collection<K> domain, java.util.Collection<V> range, boolean totalsOnly, boolean injectivesOnly, boolean surjectivesOnly) throws java.lang.InterruptedException
- Throws:
java.lang.InterruptedException
-
allTotalMappings
public static <K,V> java.util.Collection<java.util.Map<K,V>> allTotalMappings(java.util.Collection<K> domain, java.util.Collection<V> range) throws java.lang.InterruptedException
- Throws:
java.lang.InterruptedException
-
allPartialMappings
public static <K,V> java.util.Collection<java.util.Map<K,V>> allPartialMappings(java.util.Collection<K> domain, java.util.Collection<V> range) throws java.lang.InterruptedException
- Throws:
java.lang.InterruptedException
-
allTotalAndInjectiveMappingsWithConstraint
public static <K,V> java.util.Set<java.util.Map<K,V>> allTotalAndInjectiveMappingsWithConstraint(java.util.Collection<K> domain, java.util.Collection<V> range, java.util.function.Predicate<java.util.Map<K,V>> pPredicate) throws java.lang.InterruptedException
Computes all total mappings that satisfy some given predicate. The predicate is already applied to the partial mappings from which the total mappings are computed in order to prune and speed up the computation.- Parameters:
domain
- The domain set.range
- The range set.pPredicate
- The predicate that is evaluated for every partial- Returns:
- All partial mappings from the domain set to the range set.
- Throws:
java.lang.InterruptedException
-
allTotalMappingsWithLocalConstraints
public static <K,V> java.util.Set<java.util.Map<K,V>> allTotalMappingsWithLocalConstraints(java.util.Collection<K> domain, java.util.Collection<V> range, java.util.function.Predicate<Pair<K,V>> pPredicate) throws java.lang.InterruptedException
- Throws:
java.lang.InterruptedException
-
allFuntionsFromFunctionallyDenotedRelation
public static <K,V> java.util.Set<java.util.Map<K,V>> allFuntionsFromFunctionallyDenotedRelation(java.util.Map<K,java.util.Collection<V>> pRelation) throws java.lang.InterruptedException
- Throws:
java.lang.InterruptedException
-
shuffle
public static <T> void shuffle(java.util.List<T> list, long seed)
-
getRandomElement
public static <T> T getRandomElement(java.util.Collection<T> set, long seed)
-
mergeSort
public static <T extends java.lang.Comparable<T>> java.util.List<T> mergeSort(java.util.Collection<T> set)
-
keySetSortedByValues
public static <K,V extends java.lang.Comparable<V>> java.util.List<K> keySetSortedByValues(java.util.Map<K,V> map, boolean asc)
-
calculateNumberOfTotalOrderings
public static int calculateNumberOfTotalOrderings(PartialOrderedSet<?> set) throws java.lang.InterruptedException
- Throws:
java.lang.InterruptedException
-
getAllTotalOrderings
public static <E> java.util.Collection<java.util.List<E>> getAllTotalOrderings(PartialOrderedSet<E> set) throws java.lang.InterruptedException
- Throws:
java.lang.InterruptedException
-
serializeAsSet
public static java.lang.String serializeAsSet(java.util.Collection<java.lang.String> set)
-
unserializeSet
public static java.util.Set<java.lang.String> unserializeSet(java.lang.String setDescriptor)
-
unserializeList
public static java.util.List<java.lang.String> unserializeList(java.lang.String listDescriptor)
-
unserializeInterval
public static org.apache.commons.math3.geometry.euclidean.oned.Interval unserializeInterval(java.lang.String intervalDescriptor)
-
getInvertedCopyOfList
public static <T> java.util.List<T> getInvertedCopyOfList(java.util.List<T> list)
-
addAndGet
public static <T> java.util.List<T> addAndGet(java.util.List<T> list, T item)
-
groupCollectionByAttribute
public static <T,U> java.util.Map<U,java.util.Collection<T>> groupCollectionByAttribute(java.util.Collection<T> collection, org.api4.java.common.attributedobjects.IGetter<T,U> getter) throws java.lang.InterruptedException, org.api4.java.common.attributedobjects.GetPropertyFailedException
- Throws:
java.lang.InterruptedException
org.api4.java.common.attributedobjects.GetPropertyFailedException
-
explode
public static java.util.List<java.lang.String> explode(java.lang.String stringList)
Splits a string into multiple strings using "," as a separator and returns the result as a list.- Parameters:
stringList
- The list in the form of a string.- Returns:
-
explode
public static java.util.List<java.lang.String> explode(java.lang.String stringList, java.lang.String separator)
Splits a string into multiple strings by the given separator and returns the result as a list.- Parameters:
stringList
- The list in the form of a string.separator
- The separator to be used for splitting.- Returns:
- The list representing the split string.
-
implode
public static java.lang.String implode(java.util.Collection<? extends java.lang.Object> collection, java.lang.String separator)
Concatenates toString representations of objects separated by the given separator to a single string.- Parameters:
collection
- The collection of objects to be concatenated.separator
- The separator for separating elements.- Returns:
- The collection of objects concatenated to a string.
-
doesStringCollectionOnlyContainNumbers
public static boolean doesStringCollectionOnlyContainNumbers(java.util.Collection<java.lang.String> strings)
-
getGenericClass
public static java.lang.reflect.Type getGenericClass(java.util.Collection<?> c)
-
-