我有一个包含100个元素的列表testEle。我正在对它进行迭代,只需要过滤包含第二个列表finalList {a1,a2,a3...等等}中任何元素的值
testEle
finalList
testEle.stream().filter( x -> x.matches(// any one of finalList element here))
我不确定.matches()里面应该有什么,或者我是否应该使用其他东西?
.matches()
iyfamqjs1#
matches是一个字符串函数,用于测试正则表达式。只需检查List::contains。
testEle.stream().filter( x -> finalList.contains(x))
ghg1uchk2#
我有一个包含100个元素的列表testEle。我正在对它进行迭代,只需要过滤包含第二个列表finalList中任何元素的值。由于contain()检查的开销**O(n)**取决于finalList的大小,因此将其值存储到HashSet中并针对该集合执行检查可能是有意义的。
contain()
HashSet
Set<Foo> set = new HashSet<>(finalList); testEle.stream().filter(set::contains)...
我需要不区分大小写的比较。那么如何做到这一点?finalList.contains.equalsIgnoreCase类型的东西然后,您可以在筛选器内部的finalList上创建一个流,并将Stream.anyMacth()作为嵌套流的终端操作应用。
finalList.contains.equalsIgnoreCase
Stream.anyMacth()
List<Foo> finalList = // initializing the list testEle.stream().filter(x -> finalList.stream().anyMatch(y -> y.equalsIgnoreCase(x)) )...
2条答案
按热度按时间iyfamqjs1#
matches是一个字符串函数,用于测试正则表达式。只需检查List::contains。
ghg1uchk2#
我有一个包含100个元素的列表
testEle
。我正在对它进行迭代,只需要过滤包含第二个列表finalList
中任何元素的值。由于
contain()
检查的开销**O(n)**取决于finalList
的大小,因此将其值存储到HashSet
中并针对该集合执行检查可能是有意义的。我需要不区分大小写的比较。那么如何做到这一点?
finalList.contains.equalsIgnoreCase
类型的东西然后,您可以在筛选器内部的
finalList
上创建一个流,并将Stream.anyMacth()
作为嵌套流的终端操作应用。