Поток> как получить значение из MyClass или проверить, если список пуст - PullRequest
0 голосов
/ 03 октября 2018

Я работаю с лямбда-выражениями.Иногда мне нужно пройти через такое объявление, чтобы проверить, является ли мой List<MyOwnClass> пустым, или получить из него значение.

Stream<Optional<Stream<Optional<List<MyOwnClass>>>>>

Особый случай, с которым я сейчас сталкиваюсь, заключается в следующемобъявление:

Stream<Optional<List<MyOwnProductClass>>> streamProduct;

Если бы у меня было что-то вроде этого:

Optional<List<MyOwnProductClass>> optionalProduct

Я мог бы получить доступ так: optionalProduct.get().isEmpty(), потому что get() являетсяНеобязательный метод, но не уверен, как это сделать с помощью Stream, поскольку такого метода не существует.Для следующего объявления:

Stream<Optional<List<MyOwnProductClass>>> streamProduct;

Невозможно сделать что-то подобное: streamProduct.get().get().isEmpty(); // streamProduct.get() -> Error as it doens't exist that method

Есть идеи, как мне получить то, что мне нужно?Спасибо

1 Ответ

0 голосов
/ 03 октября 2018

Что ж, вы могли бы сделать (при условии, что у вас есть один элемент в этом потоке):

streamProduct.findFirst().get().get().isEmpty()

но будет ли смысл Optional в этом случае, если вы вызываете get напрямую?И, конечно же, эти заявления ужасны - у меня просто нет других слов, чтобы описать их;начните с рефакторинга этого (если он находится под вашим контролем).

Какой смысл заключать List в Optional - просто верните пустой список в случае, если элементы не нужны, и, конечно, это -в Stream делает это еще хуже, к сожалению.

...