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

  • 本文关键字:一个 筛选 列表 java
  • 更新时间 :
  • 英文 :


我有一个包含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.equalsIgnoreCasetype something

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

List<Foo> finalList = // initializing the list

testEle.stream().filter(x -> 
finalList.stream().anyMatch(y -> y.equalsIgnoreCase(x))
)...

相关内容

最新更新