Java Stream | Collectors toCollection() in Java

Collectors toCollection(Supplier<C> collectionFactory) method in Java is used to create a Collection using Collector. It returns a Collector that accumulates the input elements into a new Collection, in the order in which they are passed.

Syntax:

public static <T, C extends Collection<T>> Collector<T, ?, C>
      toCollection(Supplier<C> collectionFactory)

where:-

  • Collection : The root interface in the collection hierarchy. A collection represents a group of objects, known as its elements. Some collections allow duplicate elements and others do not. Some are ordered and others unordered.
  • Collector<T, A, R> : A mutable reduction operation that accumulates input elements into a mutable result container, optionally transforming the accumulated result into a final representation after all input elements have been processed. Reduction operations can be performed either sequentially or in parallel.
    • T : The type of input elements to the reduction operation.
    • A : The mutable accumulation type of the reduction operation.
    • R : The result type of the reduction operation.
  • Supplier : A functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
  • collectionFactory : A Supplier which returns a new, empty Collection of the appropriate type.

Parameters: This method takes a mandatory parameter collectionFactory of type Supplier which returns a new, empty Collection of the appropriate type.

Return Value: This method returns a collector which collects all the input elements into a Collection, in encounter order.

Below given are some examples to illustrate the implementation of toCollection() in a better way:

Example 1:

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java code to demonstrate Collectors
// toCollection(Supplier collectionFactory) method
  
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
  
class GFG {
  
    // Driver code
    public static void main(String[] args)
    {
  
        // Creating a string stream
        Stream<String> s = Stream.of("Geeks", "for", "GeeksClasses");
  
        // Using toCollection() method
        // to create a collection
        Collection<String> names = s
                                       .collect(Collectors
                                                    .toCollection(TreeSet::new));
  
        // Printing the elements
        System.out.println(names);
    }
}

chevron_right


Output:

[Geeks, GeeksClasses, for]

Example 2:

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java code to demonstrate Collectors
// toCollection(Supplier collectionFactory) method
  
import java.util.Collection;
import java.util.TreeSet;
import java.util.stream.Collectors;
import java.util.stream.Stream;
  
class GFG {
  
    // Driver code
    public static void main(String[] args)
    {
  
        // Creating a string stream
        Stream<String> s = Stream.of("2.5", "6", "4");
  
        // Using Collectors toCollection()
        Collection<String> names = s
                                       .collect(Collectors
                                                    .toCollection(TreeSet::new));
  
        // Printing the elements
        System.out.println(names);
    }
}

chevron_right


Output:

[2.5, 4, 6]


My Personal Notes arrow_drop_up

In love with a semicolon because sometimes i miss it so badly)

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.