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

时间:2015-01-13 23:50:08

标签: java functional-programming java-8 java-stream

我创建了两个Stream

Stream<String> first= ...
Stream<String> second= ...

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

first.filter(s-> !s.contains(second.toString())
     .collect(Collectors.toList());

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

2 个答案:

答案 0 :(得分:8)

您需要收集second流并将其所有值存储在一些经过调整的数据结构中。

例如使用Set

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

答案 1 :(得分:0)

    List<String> first = new ArrayList<String>();
    List<String> second = new ArrayList<String>();

    for (Integer i = 0; i < 100; i++) {
        first.add(i.toString());
    }

    for (Integer i = 25; i < 36; i++) {
        second.add(i.toString());
    }   

    boolean result = second.stream().allMatch(
            value -> first.stream().collect(Collectors.toList()).contains(value));