java 从列表的多个值中筛选一个值

6tqwzwtp  于 2022-11-27  发布在  Java
关注(0)|答案(2)|浏览(132)

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

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

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

iyfamqjs

iyfamqjs1#

matches是一个字符串函数,用于测试正则表达式。只需检查List::contains。

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

ghg1uchk2#

我有一个包含100个元素的列表testEle。我正在对它进行迭代,只需要过滤包含第二个列表finalList中任何元素的值。
由于contain()检查的开销**O(n)**取决于finalList的大小,因此将其值存储到HashSet中并针对该集合执行检查可能是有意义的。

Set<Foo> set = new HashSet<>(finalList);
        
testEle.stream().filter(set::contains)...
  • 来自OP的评论:*

我需要不区分大小写的比较。那么如何做到这一点?finalList.contains.equalsIgnoreCase类型的东西
然后,您可以在筛选器内部的finalList上创建一个流,并将Stream.anyMacth()作为嵌套流的终端操作应用。

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

相关问题