Package org.apache.lucene.util

# Class CollectionUtil

java.lang.Object
org.apache.lucene.util.CollectionUtil

public final class CollectionUtil extends Object
Methods for manipulating (sorting) and creating collections. Sort methods work directly on the supplied lists and don't copy to/from arrays before/after. For medium size collections as used in the Lucene indexer that is much more efficient.

NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static <T extends Comparable<? super T>>
  void`
  `introSort(List<T> list)`
  Sorts the given random access `List` in natural order.
  `static <T> void`
  `introSort(List<T> list, Comparator<? super T> comp)`
  Sorts the given random access `List` using the `Comparator`.
  `static <K, V> HashMap<K,V>`
  `newHashMap(int size)`
  Returns a new `HashMap` sized to contain `size` items without resizing the internal array.
  `static <E> HashSet<E>`
  `newHashSet(int size)`
  Returns a new `HashSet` sized to contain `size` items without resizing the internal array.
  `static <T extends Comparable<? super T>>
  void`
  `timSort(List<T> list)`
  Sorts the given random access `List` in natural order.
  `static <T> void`
  `timSort(List<T> list, Comparator<? super T> comp)`
  Sorts the given random access `List` using the `Comparator`.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Method Details

  - ### newHashMap

    public static <K, V> HashMap<K,V> newHashMap(int size)
    Returns a new `HashMap` sized to contain `size` items without resizing the internal array.

  - ### newHashSet

    public static <E> HashSet<E> newHashSet(int size)
    Returns a new `HashSet` sized to contain `size` items without resizing the internal array.

  - ### introSort

    public static <T> void introSort(List<T> list, Comparator<? super T> comp)
    Sorts the given random access `List` using the `Comparator`. The list must implement `RandomAccess`. This method uses the intro sort algorithm, but falls back to insertion sort for small lists.
    Throws:
      `IllegalArgumentException` - if list is e.g. a linked list without random access.
    See Also:
      - `IntroSorter`

  - ### introSort

    public static <T extends Comparable<? super T>> void introSort(List<T> list)
    Sorts the given random access `List` in natural order. The list must implement `RandomAccess`. This method uses the intro sort algorithm, but falls back to insertion sort for small lists.
    Throws:
      `IllegalArgumentException` - if list is e.g. a linked list without random access.
    See Also:
      - `IntroSorter`

  - ### timSort

    public static <T> void timSort(List<T> list, Comparator<? super T> comp)
    Sorts the given random access `List` using the `Comparator`. The list must implement `RandomAccess`. This method uses the Tim sort algorithm, but falls back to binary sort for small lists.
    Throws:
      `IllegalArgumentException` - if list is e.g. a linked list without random access.
    See Also:
      - `TimSorter`

  - ### timSort

    public static <T extends Comparable<? super T>> void timSort(List<T> list)
    Sorts the given random access `List` in natural order. The list must implement `RandomAccess`. This method uses the Tim sort algorithm, but falls back to binary sort for small lists.
    Throws:
      `IllegalArgumentException` - if list is e.g. a linked list without random access.
    See Also:
      - `TimSorter`