Ответ 1
После некоторого исследования исходного кода я опустил следующие таблицы:
Взято из: Потоки в глубину - Глава 7: Разделитель
В следующей таблице показано, какие типы операций разрешены для изменения символов:
| | DISTICTS | SORTED | ORDERED | SIZED | SHORT_CIRCUIT |
| ---------------------- | -------- | ------ | ------- | ----- | --------------|
| source stream | Y | Y | Y | Y | N |
| intermediate operation | PCI | PCI | PCI | PC | PI |
| terminal operation | N | N | PC | N | PI |
- Y - разрешено иметь
- P - май сохраняет
- C - Может очищаться.
- я - Может впрыскивать.
- N - недействительно; Релевантно для операции.
Взято из Таблица характеристик потоков в глубину - поток
В следующей таблице показаны, какие характеристики и флаги будут выполняться каждый промежуточный оператор операции/терминала: (SHORT_CIRCUIT
является релевантным только в контексте флагов StreamOpFlag
)
Примечание. В каждую ячейку добавляется флаг P
(Preserve), за исключением тех, которые имеют флаги C
и I
(Clear and Inject).
| | DISTINCT | SORTED | ORDERED | SIZED | SHORT_CIRCUIT |
| ---------------- | ----------| --------| ---------| -------| ---------------|
| filter | | | | C | |
| forEach | | | C | | |
| forEachOrdered | | | | | |
| allMatch | | | C | | I |
| distinct | I | | | C | |
| flatMap | C | C | | C | |
| anyMatch | | | C | | I |
| collect | | | | | |
| unOrdered | | | C | | |
| count | C | C | C | C | |
| findAny | | | C | | I |
| findFirst | | | | | I |
| flatMapToXXX | C | C | | C | |
| limit | | | | C | I |
| map | C | C | | | |
| mapToXXX | C | C | | | |
| max | | | | | |
| min | | | | | |
| noneMatch | | | C | | I |
| peek | | | | | |
| reduce | | | | | |
| skip | | | C | I | |
| sorted | | I | I | | |
| toArray | | | | | |
-
C
- Очищает. -
I
- Инъекции.