#java #list #collections #java-stream
#java #Список #Коллекции #java-stream
Вопрос:
Я только что увидел это впервые, и я хотел бы знать, является ли это хорошей практикой или, как всегда, это зависит.
Использование потоков в качестве атрибутов в домене вместо списка.
public class MyDomain {
Integer id;
Stream<SubDomain> subDomains;
}
Комментарии:
1. Нет, это не очень хорошая идея, если каждый поток предназначен только для одноразовой обработки, а не для фактического хранения данных.
Ответ №1:
Нет, это не очень хорошая практика. Потоки были созданы для поддержки операций функционального стиля над потоками элементов (см. Официальный Javadoc), но не для их сохранения.
Это еще одна хорошая цитата в официальном Javadoc:
Потоки отличаются от коллекций несколькими способами: нет хранилища. Поток — это не структура данных, в которой хранятся элементы; вместо этого он передает элементы из источника, такого как структура данных, массив, функция генератора или канал ввода-вывода, через конвейер вычислительных операций.
Поэтому не используйте его как постоянную коллекцию.
Ответ №2:
Это не очень хорошая идея, поток может быть использован один раз. Наличие его в качестве поля в объекте сделает вероятным, что его необходимо использовать более одного раза. Чтобы иметь возможность это сделать, вам нужно сохранить класс коллекции (например, a List
) и вызывать его stream()
метод, когда вам нужно получить доступ к его содержимому в виде потока.