Метод collect
Метод collect является терминальной операцией потока
Stream. Он принимает объект типа Collector,
который описывает, каким образом элементы потока будут
накапливаться в итоговый контейнер. В качестве первого
параметра передается коллектор, во втором параметре
можно передать функцию-финишер, применяемую к результату.
Чаще всего этот метод используется для преобразования
потока в список, множество или строку.
Синтаксис
stream.collect(collector)
stream.collect(supplier, accumulator, combiner)
Пример
Давайте соберем элементы потока в список с помощью
Collectors.toList:
import java.util.List;
import java.util.stream.Collectors;
public class Main
{
public static void main(String[] args)
{
List<String> res = List.of("a", "b", "c", "d", "e")
.stream()
.collect(Collectors.toList());
System.out.println(res);
}
}
Результат выполнения кода:
[a, b, c, d, e]
Пример
Давайте соберем элементы потока в множество с помощью
Collectors.toSet, удалив дубликаты:
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
public class Main
{
public static void main(String[] args)
{
Set<String> res = List.of("a", "b", "a", "c", "b")
.stream()
.collect(Collectors.toSet());
System.out.println(res);
}
}
Результат выполнения кода:
[a, b, c]
Пример
Давайте объединим элементы потока в одну строку
с помощью Collectors.joining:
import java.util.List;
import java.util.stream.Collectors;
public class Main
{
public static void main(String[] args)
{
String res = List.of("a", "b", "c", "d", "e")
.stream()
.collect(Collectors.joining("-"));
System.out.println(res);
}
}
Результат выполнения кода:
"a-b-c-d-e"