我有一个包含100个元素的列表testEle
。我正在迭代它,需要只过滤包含第二个列表finalList
{a1,a2,a3…等等}
testEle.stream().filter( x -> x.matches(// any one of finalList element here))
我不确定.matches()
内部应该是什么,或者我是否应该使用其他东西?
matches是一个String函数,用于在其上测试正则表达式。请检查List::contains.
testEle.stream().filter( x -> finalList.contains(x))
我有一个包含100个元素的列表
testEle
。我正在迭代它,需要只过滤包含第二个列表finalList
中任何元素的值。
由于contain()
检查的代价为0 (n)根据finalList
的大小,将其值存储到HashSet
中并对该集合执行检查可能是有意义的。
Set<Foo> set = new HashSet<>(finalList);
testEle.stream().filter(set::contains)...
来自OP的评论:
我需要不区分大小写的比较。那么怎么做呢?
finalList.contains.equalsIgnoreCase
type something
然后你可以在过滤器内部的finalList
上创建一个流,并应用Stream.anyMacth()
作为嵌套流的终端操作。
List<Foo> finalList = // initializing the list
testEle.stream().filter(x ->
finalList.stream().anyMatch(y -> y.equalsIgnoreCase(x))
)...