我正在使用 lambda 表达式。有时我需要通过这样的声明来检查我的 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
知道如何获得我需要的东西吗?谢谢
最佳答案
你可以这样做(假设你在该流中有一个元素):
streamProduct.findFirst().get().get().isEmpty()
但重点是 Optional
在这种情况下,如果您调用 get
直接地?当然,这些声明是可怕的——我根本没有其他词来形容它们;从重构开始(如果它在您的控制之下)。
包装List
有什么意义?进入Optional
- 如果不需要元素,只需返回一个空列表,当然将其包装到 Stream
中不幸的是,这让情况变得更糟。
关于lambda - Stream<Optional<List<MyClass>>> 如何从 MyClass 获取值或检查 List 是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52634754/