Class 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>
      boolean
      differenceEmpty​(java.util.Collection<T> a, java.util.Collection<U> b)  
      static <S,​T extends S,​U extends S>
      boolean
      differenceNotEmpty​(java.util.Collection<T> a, java.util.Collection<U> b)  
      static <S,​T extends S,​U extends S>
      boolean
      disjoint​(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 <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, 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 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)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • union

        @SafeVarargs
        public static <T> java.util.Collection<T> union​(java.util.Collection<T>... set)
      • 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.
      • 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,
                                                                                                            IGetter<T,​U> getter)
      • 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)