Class CollectionUtil

java.lang.Object
com.pnfsoftware.jeb.util.collect.CollectionUtil

public class CollectionUtil extends Object
Convenience methods for Java collections, in particular, lists.
  • Constructor Details

    • CollectionUtil

      public CollectionUtil()
  • Method Details

    • containsNull

      public static boolean containsNull(Iterable<?> c)
      Determine if the given iterable contains one or more null elements.
      Parameters:
      c -
      Returns:
    • containsNonNull

      public static boolean containsNonNull(Iterable<?> c)
      Determine if the given iterable contains one or more non-null elements.
      Parameters:
      c -
      Returns:
    • containsReference

      public static <T> boolean containsReference(Collection<? extends T> c, T o)
      Determine if the collection contains the object reference (differs from Collection.contains(Object) by checking reference equality == instead of Object.equals(Object) equality)
      Parameters:
      c - collection to loop into
      o - element whose presence in this collection is to be tested
      Returns:
      true if the collection contains the specified element
    • contains

      public static boolean contains(Collection<?> c, Object v)
      Safely check if an object is present within a collection.
      Parameters:
      c - collection, potentially null
      v - object, potentially null
      Returns:
      true IFF the object is contained in the collection
    • intersect

      public static <T> Set<T> intersect(Collection<? extends T> c1, Collection<? extends T> c2)
      Return the intersection of 2 collections (order of collection parameters does not matter).
      Parameters:
      c1 - first collection
      c2 - second collection
      Returns:
      a set of intersection
    • hasIntersection

      public static <T> boolean hasIntersection(Collection<? extends T> c1, Collection<? extends T> c2)
    • binarySearch

      public static <T, K extends Comparable<K>> T binarySearch(List<T> list, K key, IExtractor<T,K> extractor)
      Perform a binary search in an ordered list.
      Parameters:
      list - a list of ordered items
      key - the ordering key for the items.
      extractor - key extractor
      Returns:
      the element, null if not found
    • binarySearchEx

      public static <T, K extends Comparable<K>> int binarySearchEx(List<? extends T> list, K key, IExtractor<T,? extends K> extractor, Comparator<K> cc)
      Perform a binary search in an ordered list.
      Parameters:
      list - a list of ordered items
      key - the ordering key for the items.
      extractor - key extractor
      comp - optional custom comparator for the keys
      Returns:
      the zero+ index of the found element; else, the negative insertion index of the ghost element
    • compareByReference

      public static <T> boolean compareByReference(Collection<? extends T> c1, Collection<? extends T> c2, boolean sorted)
    • compare

      public static <T> boolean compare(Collection<? extends T> c1, Collection<? extends T> c2, boolean sorted)
    • count

      public static <T> int count(Collection<T> coll, T item)
      Count elements using Object.equals(Object).
      Type Parameters:
      T -
      Parameters:
      coll -
      item -
      Returns:
    • identityCount

      public static <T> int identityCount(Collection<T> coll, T item)
      Count elements using ==.
      Type Parameters:
      T -
      Parameters:
      coll -
      item -
      Returns:
    • addNonNulls

      public static <T> Collection<T> addNonNulls(Collection<T> dst, Collection<? extends T> src)
    • addNonNulls

      @SafeVarargs public static <T> Collection<T> addNonNulls(Collection<T> dst, T... elts)
    • doubleCollectionIterable

      public static <T> Iterable<T> doubleCollectionIterable(Collection<T> coll1, Collection<T> coll2)
      Create a generator that will iterate over two collections, starting with the first one, then the second one.

      This method is convenient to iterate over two collections without having to create an intermediate list holding the elements.

      Type Parameters:
      T -
      Parameters:
      coll1 - first collection
      coll2 - second collection
      Returns:
      an iterable