> For the complete documentation index, see [llms.txt](https://kaze.gitbook.io/qa-theory/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kaze.gitbook.io/qa-theory/osnovy-programmirovaniya-na-java/kollektory.md).

# Коллекторы

Коллекторы (Collectors) в Java Stream API предоставляют удобный способ собирать элементы потока в различные коллекции или другие структуры данных. Они позволяют выполнить конечную операцию на потоке данных, собрав результаты в желаемый контейнер или агрегируя данные в другом формате.

1. **toList**: Собирает элементы потока в список.

   ```java
   List<T> list = stream.collect(Collectors.toList());
   ```
2. **toSet**: Собирает элементы потока в множество.

   ```java
   Set<T> set = stream.collect(Collectors.toSet());
   ```
3. **toMap**: Собирает элементы потока в карту, используя ключи и значения, вычисленные из элементов потока.

   ```java
   Map<K, V> map = stream.collect(Collectors.toMap(keyMapper, valueMapper));
   ```
4. **joining**: Собирает элементы потока в одну строку, объединяя их с разделителем.

   ```java
   String result = stream.collect(Collectors.joining(delimiter));
   ```
5. **groupingBy**: Группирует элементы потока по заданному критерию.

   ```java
   Map<K, List<T>> groups = stream.collect(Collectors.groupingBy(classifier));
   ```
6. **partitioningBy**: Разделяет элементы потока на две группы на основе заданного предиката.

   ```java
   Map<Boolean, List<T>> partitions = stream.collect(Collectors.partitioningBy(predicate));
   ```
7. **counting**: Подсчитывает количество элементов в потоке.

   ```java
   long count = stream.collect(Collectors.counting());
   ```
8. **summarizingInt/Long/Double**: Предоставляет сводную статистику для числовых элементов потока (сумма, среднее значение, максимальное, минимальное значение и количество элементов).

   ```java
   IntSummaryStatistics stats = stream.collect(Collectors.summarizingInt());
   ```
9. **reducing**: Применяет функцию сведения (reduction) ко всем элементам потока.

   ```java
   Optional<T> result = stream.collect(Collectors.reducing(reductionFunction));
   ```
10. **mapping**: Применяет функцию к элементам потока и собирает результаты в коллекцию.

    ```java
    List<U> result = stream.collect(Collectors.mapping(mapper, downstreamCollector));
    ```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kaze.gitbook.io/qa-theory/osnovy-programmirovaniya-na-java/kollektory.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
