如何检查 Stream<String> 是否包含 Java 中的另一个 Stream<String> 8
How to check if a Stream<String> contains another Stream<String> in Java 8
我创建了两个 Stream
Stream<String> first= ...
Stream<String> second= ...
两人都有号码。假设第一个文件有 1 到 1000,第二个文件有 25 到 35。我想检查第一个文件是否包含秒数。
first.filter(s-> !s.contains(second.toString())
.collect(Collectors.toList());
如果我将 second.toString()
替换为“10”,那么它可以工作,但我如何才能检查整个流,而不仅仅是一个字符或一个字符串?
您需要收集 second
流并将其所有值存储在一些适配的数据结构中。
例如使用 Set
:
Set<String> secondSet = second.collect(Collectors.toSet());
List<String> f = first.filter(s -> secondSet.contains(s))
.collect(Collectors.toList());
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));
我创建了两个 Stream
Stream<String> first= ...
Stream<String> second= ...
两人都有号码。假设第一个文件有 1 到 1000,第二个文件有 25 到 35。我想检查第一个文件是否包含秒数。
first.filter(s-> !s.contains(second.toString())
.collect(Collectors.toList());
如果我将 second.toString()
替换为“10”,那么它可以工作,但我如何才能检查整个流,而不仅仅是一个字符或一个字符串?
您需要收集 second
流并将其所有值存储在一些适配的数据结构中。
例如使用 Set
:
Set<String> secondSet = second.collect(Collectors.toSet());
List<String> f = first.filter(s -> secondSet.contains(s))
.collect(Collectors.toList());
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));