【问题标题】:Iterating inside a java stream filter在 java 流过滤器中进行迭代
【发布时间】:2022-01-06 21:36:55
【问题描述】:
    return Arrays.stream(partNumbers.get())
        .filter(partNumber -> Objects.nonNull(partNumber.getDescription()))
        .filter(partNumber -> partNumber.getDescription().toLowerCase().contains(rateAbbr.toLowerCase()))
        .findFirst();

上面的代码会尝试从partNumbers 列表中查找partNumber,其中partNumber 的描述包含“rateAbbr”。 此代码一直有效,直到“rateAbbr”是一个字符串,但现在它已更改为 rateAbbrs 列表,我需要找到一个其描述包含任何 rateAbbrs 的部件号。我用流尝试过,但还没有运气。任何帮助表示赞赏。

【问题讨论】:

  • .filter(partNumber -> rateAbbr.stream().anyMatch(partNumber.getDescription().toLowerCase()::contains))
  • 谢谢。只是为了区分大小写 -partNumbers.stream().filter(partNumber -> rateAbbrs.stream().map(String::toLowerCase).anyMatch(partNumber.getDescription().toLowerCase()::contains))。 findFirst();

标签: java iterator java-stream predicate


【解决方案1】:

只需创建一个私有布尔函数,它遍历列表并检查是否匹配,然后在过滤器方法中调用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 2018-07-28
    • 1970-01-01
    • 2021-02-16
    • 2018-09-27
    • 2020-07-28
    相关资源
    最近更新 更多