如何在Java中从固定数量的表达式生成惰性流?

rxztt3cl  于 2022-12-02  发布在  Java
关注(0)|答案(1)|浏览(91)

我想得到与Stream.of相同的结果,但很懒。即我想做与Stream. of相同的结果。

Stream<MyClass> s = Stream.of(
   expression1(),
   expression2(),
   expression3(),
   ...
)

我能做的

List<Supplier<MyClass>> s = Arrays.asList(
   ()->expression1(),
   ()->expression2(),
   ()->expression3(),
   ...
)

但是它可以用流来完成吗?注意,如果供应商被放入流元素中,这将是重复的...

vshtjzan

vshtjzan1#

您可以使用Stream.of()在任何其他对象的同一个流中创建Stream<Supplier>

Stream<Supplier<MyClass>> s = Stream.of(
    () -> expression1(),
    () -> expression2(),
    () -> expression3()
);

然后,这些供应商可以在流中被懒惰地评估。

  • 范例:*
MyClass result = s.map(Supplier::get)
    .filter(someCondition)
    .findFirst()
    .orElseThrow();

相关问题