【问题标题】:Filtering on unrelated variable in java streams过滤java流中不相关的变量
【发布时间】:2022-08-14 15:16:22
【问题描述】:

我有一个列表,我想在这个列表上执行一个操作,例如,打印项目。但我只想在特定条件适用的情况下这样做。

要应用条件,我们有 .filter 选项,但似乎这仅适用于流本身元素的条件。 (例如,如果项目的价值 42

假设我的条件是仅在生成的不相关随机数等于42 时才继续。我怎么做?

items
    .stream()
    .filter( 
       // if randomVar == 42, go ahead)
    .forEach(item -> System.out.println(item));
  • filter(x -> randomVar == 42) 工作得很好。
  • 为什么不将流操作包装在一个简单的 if 条件中? if (randomValue == 42) { items.stream().forEach(item -> System.out.println(item));}

标签: java java-stream


【解决方案1】:

一种可能的解决方案是定义一个自定义谓词,如下所示:

Predicate<Item> myPredicate = item -> randomVar == 42;

然后你可以在你的流中使用谓词:

items
    .stream()
    .filter(myPredicate)
    .forEach(System.out::println);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    • 2018-04-26
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多