Quais operações preservam a ordem [duplicada]

Esta pergunta já tem uma resposta aqui:

Como garantir a ordem de processamento nos fluxos java8? 2 respostas

TL; DR; Estou procurando um local onde possa procurar se uma determinada operação intermediária ou terminal. Onde posso encontrar essa documentação?

Edita Esta não é uma duplicata deComo garantir a ordem de processamento nos fluxos java8?, pois essa pergunta não fornece uma lista abrangente de operaçõe

Fund

Oa documentação do pacote diz:

Se um fluxo tem ou não uma ordem de encontro, depende da origem e das operações intermediárias

Qual é repetido emesta excelente resposta do stackoverflow

Para garantir a manutenção do pedido durante toda uma operação de fluxo, você deve estudar a documentação da fonte do fluxo, todas as operações intermediárias e a operação do terminal para manter ou não o pedido (ou se a fonte possui um pedido no primeiro lugar)

Está tudo bem, mas qual documentação devo examinar? Oa documentação do pacote menciona em um exemplo quemap garante pedidos, mas não possui uma lista exaustiva. Ojavadoc para a classe Stream documenta algumas operações intermediárias, mas não todas. Considere por exemplomap:

Retorna um fluxo que consiste nos resultados da aplicação da função fornecida aos elementos desse flux

Esta é uma operação intermediári

orfilter

Retorna um fluxo que consiste nos elementos desse fluxo que correspondem ao predicado especificad

Esta é uma operação intermediári

Nenhuma delas descreve se preserva a encomend

This stackoverflow answer reivindicações:

Na verdade, toda operação intermediária preserva um pedido por padrão. As únicas exceções são:

unordered () que remove a restrição de pedidosorted () que altera a ordem.

Quando não for especificado explicitamente, você pode assumir que a operação mantém o pedido. Mesmo distinto () mantém a ordem, embora adicione muita complexidade ao fluxo paralel

mas existe alguma documentação oficial para comprovar isso?

Crédito extr

Na verdade, existem dois problemas de pedidos separado

A saída da operação mantém a mesma ordem que a entrada? operação é executada em ordem em cada element

Por exemplo, um paralelomap operação @ poderia repassar todos os elementos em uma ordem arbitrária (violando 2.), mas ainda manter a ordem no fluxo retornado (obedecendo a 1.)

questionAnswers(2)

yourAnswerToTheQuestion