新方法 takeWhile
和 dropWhile
允许我们根据谓词获取流的一部分。
这里的流可以是有序的或者无序的,所以:
- 在有序流上,
takeWhile
返回从流中获取的与给定谓词匹配的元素的“最长前缀”,从流的开头开始。 - 在无序流上,
takeWhile
返回与给定谓词(但不是全部)匹配的流元素的子集,从流的开头开始。
dropWhile
方法与 takeWhile
方法相反。
- 在有序流上,
dropWhile
返回匹配给定谓词的“最长前缀”之后的剩余项目。 - 在无序流上,
dropWhile
在删除与给定谓词匹配的元素子集后返回剩余的流元素。
takeWhile 和 dropWhile 示例
在这个例子中,我们有从“a”到“i”的字符列表。
我想要在迭代中可能出现在 char 'd' 之前的所有字符。
List<String> alphabets = List.of("a", "b", "c", "d", "e", "f", "g", "h", "i"); List<String> subset1 = alphabets .stream() .takeWhile(s -> !s.equals("d")) .collect(Collectors.toList()); System.out.println(subset1);
如前所述,dropWhile
的作用与 takeWhile
方法相反,因此在上面的示例中,如果使用,它将返回由 takeWhile
谓词留下的所有字符。
List<String> alphabets = List.of("a", "b", "c", "d", "e", "f", "g", "h", "i"); List<String> subset2 = alphabets .stream() .dropWhile(s -> !s.equals("d")) .collect(Collectors.toList()); System.out.println(subset2);
日期:2020-09-17 00:10:05 来源:oir作者:oir