我正在使用lambda表达式。有时,我需要经过这样的声明才能检查我的List<MyOwnClass>
是否为空或从中获取值。
Stream<Optional<Stream<Optional<List<MyOwnClass>>>>>
我现在面临的特殊情况是以下声明:
Stream<Optional<List<MyOwnProductClass>>> streamProduct;
如果我有这样的东西:
Optional<List<MyOwnProductClass>> optionalProduct
我可以这样访问:optionalProduct.get().isEmpty()
,因为get()
是Optional的方法,但是由于不存在相同的方法,因此不确定如何使用Stream进行操作。对于以下声明:
Stream<Optional<List<MyOwnProductClass>>> streamProduct;
无法执行以下操作:streamProduct.get().get().isEmpty(); // streamProduct.get() -> Error as it doens't exist that method
有什么想法可以得到我所需要的吗?谢谢
答案 0 :(得分:2)
您可以做的(假设流中只有一个元素):
streamProduct.findFirst().get().get().isEmpty()
但是如果您直接调用Optional
,在这种情况下是get
的重点吗?当然,这些声明是可怕的-我只是无话可说了。从重构它开始(如果它在您的控制之下)。
将List
封装到Optional
中有什么意义-如果不需要元素,只需返回一个空List,当然将其封装到Stream
中会使情况更糟,很不幸。