如何检查Stream <String>是否包含Java 8中的另一个Stream <String>

jim*_*s17 0 java functional-programming java-8 java-stream

我创建了两个Stream

Stream<String> first= ...
Stream<String> second= ...
Run Code Online (Sandbox Code Playgroud)

他们俩都有数字.假设第一个文件有1到1000而第二个文件有25到35.我想检查第一个文件是否包含秒数的数字.

first.filter(s-> !s.contains(second.toString())
     .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

如果我second.toString()用"10" 替换它然后它可以工作,但我如何检查整个流而不仅仅是字符串或字符串?

Jea*_*art 8

您需要收集second流并将其所有值存储在一些适应的数据结构中.

例如使用Set:

Set<String> secondSet = second.collect(Collectors.toSet());
List<String> f = first.filter(s -> secondSet.contains(s))
                      .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)