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?