【问题标题】:Filter a value from multiple values in a list从列表中的多个值中筛选一个值
【发布时间】:2022-11-26 01:10:36
【问题描述】:

我有一个包含 100 个元素的列表 testEle。我正在迭代它,只需要过滤包含第二个列表中任何元素的值 finalList {a1,a2,a3...so on}

testEle.stream().filter( x -> x.matches(// any one of finalList element here))

我不确定 .matches() 中应该包含什么,或者我是否应该使用其他东西?

【问题讨论】:

    标签: java


    【解决方案1】:

    matches 是一个 String 函数,用于测试其上的正则表达式。只需检查 List::contains。

    testEle.stream().filter( x -> finalList.contains(x))
    

    【讨论】:

    • 抱歉,但我没有提到我需要不区分大小写的比较。那么该怎么做呢? finalList.contains.equalsIgnoreCase输入一些东西
    【解决方案2】:

    我有一个包含 100 个元素的列表 testEle。我正在迭代它,只需要过滤包含第二个列表finalList 中任何元素的值。

    因为contain()支票有成本上)根据 finalList 的大小,将其值存储到 HashSet 中并对集合执行检查可能是有意义的。

    Set<Foo> set = new HashSet<>(finalList);
            
    testEle.stream().filter(set::contains)...
    

    我需要不区分大小写的比较。那么该怎么做呢? finalList.contains.equalsIgnoreCase 类型的东西

    然后,您可以在过滤器内的 finalList 上创建一个流,并将 [Stream.anyMacth()][anyMatch] 应用为嵌套流的终端操作。

    List<Foo> finalList = // 
            
    testEle.stream().filter(x -> finalList.stream().anyMatch(y -> y.equalsIgnoreCase(x))...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-03
      • 2014-12-16
      • 2012-07-03
      • 1970-01-01
      • 2015-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多