# Class LangCollectors

java.lang.Object
org.apache.commons.lang3.stream.LangCollectors

public final class LangCollectors extends Object
Implementations of `Collector` that implement various reduction operations.

This class is called `LangCollectors` instead of `Collectors` to avoid clashes with `Collectors`.

Since:
  3.13.0

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static <T,R,A> R`
  `collect(Collector<? super T, A, R> collector, T... array)`
  Delegates to `Stream.collect(Collector)` for a Stream on the given array.
  `static Collector<Object,?,String>`
  `joining()`
  Returns a `Collector` that concatenates the input elements, separated by the specified delimiter, in encounter order.
  `static Collector<Object,?,String>`
  `joining(CharSequence delimiter)`
  Returns a `Collector` that concatenates the input elements, separated by the specified delimiter, in encounter order.
  `static Collector<Object,?,String>`
  `joining(CharSequence delimiter, CharSequence prefix, CharSequence suffix)`
  Returns a `Collector` that concatenates the input elements, separated by the specified delimiter, with the specified prefix and suffix, in encounter order.
  `static Collector<Object,?,String>`
  `joining(CharSequence delimiter, CharSequence prefix, CharSequence suffix, Function<Object,String> toString)`
  Returns a `Collector` that concatenates the input elements, separated by the specified delimiter, with the specified prefix and suffix, in encounter order.

  ### Methods inherited from class Object

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

- ## Method Details

  - ### collect

    @SafeVarargs public static <T,R,A> R collect(Collector<? super T, A, R> collector, T... array)
    Delegates to `Stream.collect(Collector)` for a Stream on the given array.
    Type Parameters:
      `T` - The type of the array elements.
      `R` - the type of the result.
      `A` - the intermediate accumulation type of the `Collector`.
    Parameters:
      `collector` - the `Collector` describing the reduction.
      `array` - The array, assumed to be unmodified during use, a null array treated as an empty array.
    Returns:
      the result of the reduction
    Since:
      3.16.0
    See Also:
      - `Stream.collect(Collector)`
      - `Arrays.stream(Object[])`
      - `Collectors`

  - ### joining

    public static Collector<Object,?,String> joining()
    Returns a `Collector` that concatenates the input elements, separated by the specified delimiter, in encounter order.

    This is a variation of `Collectors.joining()` that works with any element class, not just `CharSequence`.

    For example:

        Stream.of(Long.valueOf(1), Long.valueOf(2), Long.valueOf(3))
           .collect(LangCollectors.joining())
        returns "123"

    Returns:
      A `Collector` which concatenates Object elements, separated by the specified delimiter, in encounter order.

  - ### joining

    public static Collector<Object,?,String> joining(CharSequence delimiter)
    Returns a `Collector` that concatenates the input elements, separated by the specified delimiter, in encounter order.

    This is a variation of `Collectors.joining(CharSequence)` that works with any element class, not just `CharSequence`.

    For example:

        Stream.of(Long.valueOf(1), Long.valueOf(2), Long.valueOf(3))
          .collect(LangCollectors.joining("-"))
        returns "1-2-3"

    Parameters:
      `delimiter` - the delimiter to be used between each element.
    Returns:
      A `Collector` which concatenates Object elements, separated by the specified delimiter, in encounter order.

  - ### joining

    public static Collector<Object,?,String> joining(CharSequence delimiter, CharSequence prefix, CharSequence suffix)
    Returns a `Collector` that concatenates the input elements, separated by the specified delimiter, with the specified prefix and suffix, in encounter order.

    This is a variation of `Collectors.joining(CharSequence, CharSequence, CharSequence)` that works with any element class, not just `CharSequence`.

    For example:

        Stream.of(Long.valueOf(1), Long.valueOf(2), Long.valueOf(3))
          .collect(LangCollectors.joining("-", "[", "]"))
        returns "[1-2-3]"

    Parameters:
      `delimiter` - the delimiter to be used between each element
      `prefix` - the sequence of characters to be used at the beginning of the joined result
      `suffix` - the sequence of characters to be used at the end of the joined result
    Returns:
      A `Collector` which concatenates CharSequence elements, separated by the specified delimiter, in encounter order

  - ### joining

    public static Collector<Object,?,String> joining(CharSequence delimiter, CharSequence prefix, CharSequence suffix, Function<Object,String> toString)
    Returns a `Collector` that concatenates the input elements, separated by the specified delimiter, with the specified prefix and suffix, in encounter order.

    This is a variation of `Collectors.joining(CharSequence, CharSequence, CharSequence)` that works with any element class, not just `CharSequence`.

    For example:

        Stream.of(Long.valueOf(1), null, Long.valueOf(3))
          .collect(LangCollectors.joining("-", "[", "]", o -> Objects.toString(o, "NUL")))
        returns "[1-NUL-3]"

    Parameters:
      `delimiter` - the delimiter to be used between each element
      `prefix` - the sequence of characters to be used at the beginning of the joined result
      `suffix` - the sequence of characters to be used at the end of the joined result
      `toString` - A function that takes an Object and returns a non-null String.
    Returns:
      A `Collector` which concatenates CharSequence elements, separated by the specified delimiter, in encounter order