Devo devolver uma coleção ou um fluxo?

Suponha que eu tenha um método que retorne uma exibição somente leitura em uma lista de membros:

class Team
{
    private List<Player> players = new ArrayList<>();

    // ...

    public List<Player> getPlayers()
    {
        return Collections.unmodifiableList(players);
    }
}

Suponha ainda que tudo o que o cliente faz é iterar sobre a lista uma vez, imediatamente. Talvez colocar os jogadores em uma JList ou algo assim. O cliente faznão armazene uma referência à lista para inspeção posterior!

Dado esse cenário comum, devo retornar um fluxo?

    public Stream<Player> getPlayers()
    {
        return players.stream();
    }

Ou o retorno de um fluxo não é idiomático em Java? Os fluxos foram projetados para sempre serem "finalizados" dentro da mesma expressão em que foram criados?

questionAnswers(8)

yourAnswerToTheQuestion