Предположим, у меня есть метод, который возвращает представление только для чтения в список участников:
class Team {
private List < Player > players = new ArrayList < > ();
// ...
public List < Player > getPlayers() {
return Collections.unmodifiableList(players);
}
}
Далее предположим, что все, что делает клиент, это итерация по списку один раз, немедленно. Возможно поместить игроков в JList или что-то. Клиент не хранит ссылку на список для последующей проверки!
Учитывая этот общий сценарий, я должен вместо этого вернуть поток?
public Stream < Player > getPlayers() {
return players.stream();
}
Или возвращает поток не-идиоматических в Java? Были ли потоки предназначены для того, чтобы всегда быть "завершенными" внутри одного и того же выражения, в котором они были созданы?