| Constructor and Description |
|---|
StreamUtil() |
| Modifier and Type | Method and Description |
|---|---|
static <T> Stream<T> |
dropWhile(Stream<T> source,
Predicate<? super T> predicate)
删除 与指定断言 匹配的元素, 在第一次不匹配时终止, 返回当前(第一个不匹配元素)及剩余元素组成的新流
与 jdk9 中的 dropWhile 方法不太一样, 这里的实现是个 顺序的、有状态的中间操作
本环节中是顺序执行的, 但是后续操作可以支持并行流
但是不建议在并行流中使用, 除非你确定 dropWhile 之后的操作能在并行流中受益很多
|
static <T> Stream<T> |
iterate(T seed,
Predicate<? super T> hasNext,
UnaryOperator<T> next)
返回无限有序流
该流由 初始值 然后判断条件 以及执行 迭代函数 进行迭代获取到元素
|
static <T> Stream<T> |
iterateHierarchies(T root,
Function<T,Collection<T>> discoverer)
指定一个层级结构的根节点(通常是树或图),
然后获取包含根节点在内,根节点所有层级结构中的节点组成的流。
|
static <T> Stream<T> |
iterateHierarchies(T root,
Function<T,Collection<T>> discoverer,
Predicate<T> filter)
指定一个层级结构的根节点(通常是树或图),
然后获取包含根节点在内,根节点所有层级结构中的节点组成的流。
|
static <T> String |
join(Stream<T> stream,
CharSequence delimiter)
将Stream中所有元素以指定分隔符,合并为一个字符串,对象默认调用toString方法
|
static <T> String |
join(Stream<T> stream,
CharSequence delimiter,
Function<T,? extends CharSequence> toStringFunc)
将Stream中所有元素以指定分隔符,合并为一个字符串
|
static Stream<String> |
of(File file)
按行读取文件为
Stream |
static Stream<String> |
of(File file,
Charset charset)
按行读取文件为
Stream |
static <T> Stream<T> |
of(Iterable<T> iterable)
|
static <T> Stream<T> |
of(Iterable<T> iterable,
boolean parallel)
|
static Stream<String> |
of(Path path)
按行读取文件为
Stream |
static Stream<String> |
of(Path path,
Charset charset)
按行读取文件为
Stream |
static <T> Stream<T> |
of(T... array) |
static <T> Stream<T> |
of(T seed,
UnaryOperator<T> elementCreator,
int limit)
通过函数创建Stream
|
static <T> Stream<T> |
ofIter(Iterator<T> iterator)
|
static <T> Stream<T> |
ofIter(Iterator<T> iterator,
boolean parallel)
|
static <T> Stream<T> |
takeWhile(Stream<T> source,
Predicate<? super T> predicate)
保留 与指定断言 匹配时的元素, 在第一次不匹配时终止, 抛弃当前(第一个不匹配元素)及后续所有元素
与 jdk9 中的 takeWhile 方法不太一样, 这里的实现是个 顺序的、有状态的中间操作
本环节中是顺序执行的, 但是后续操作可以支持并行流
但是不建议在并行流中使用, 除非你确定 takeWhile 之后的操作能在并行流中受益很多
|
@SafeVarargs public static <T> Stream<T> of(T... array)
T - 元素类型array - 数组Stream,如果提供的array为null,返回Stream.empty()public static <T> Stream<T> of(Iterable<T> iterable)
T - 集合元素类型iterable - 集合Stream,如果提供的iterator为null,返回Stream.empty()public static <T> Stream<T> of(Iterable<T> iterable, boolean parallel)
T - 集合元素类型iterable - 集合parallel - 是否并行Stream,如果提供的iterator为null,返回Stream.empty()public static <T> Stream<T> ofIter(Iterator<T> iterator)
T - 集合元素类型iterator - 迭代器Stream,如果提供的iterator为null,返回Stream.empty()public static <T> Stream<T> ofIter(Iterator<T> iterator, boolean parallel)
T - 集合元素类型iterator - 迭代器parallel - 是否并行Stream,如果提供的iterator为null,返回Stream.empty()public static Stream<String> of(File file)
Streamfile - 文件Stream,如果提供的file为null,返回Stream.empty()public static Stream<String> of(Path path)
Streampath - 路径Stream,如果提供的file为null,返回Stream.empty()public static Stream<String> of(File file, Charset charset)
Streamfile - 文件charset - 编码Stream,如果提供的file为null,返回Stream.empty()public static Stream<String> of(Path path, Charset charset)
Streampath - 路径charset - 编码Stream,如果提供的path为null,返回Stream.empty()public static <T> Stream<T> of(T seed, UnaryOperator<T> elementCreator, int limit)
T - 创建元素类型seed - 初始值elementCreator - 递进函数,每次调用此函数获取下一个值limit - 限制个数Streampublic static <T> String join(Stream<T> stream, CharSequence delimiter)
T - 元素类型stream - Streamdelimiter - 分隔符null,返回nullpublic static <T> String join(Stream<T> stream, CharSequence delimiter, Function<T,? extends CharSequence> toStringFunc)
T - 元素类型stream - Streamdelimiter - 分隔符toStringFunc - 元素转换为字符串的函数null,返回nullpublic static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)
T - 元素类型seed - 初始值hasNext - 条件值next - 用上一个元素作为参数执行并返回一个新的元素public static <T> Stream<T> iterateHierarchies(T root, Function<T,Collection<T>> discoverer, Predicate<T> filter)
指定一个层级结构的根节点(通常是树或图),
然后获取包含根节点在内,根节点所有层级结构中的节点组成的流。
该方法用于以平铺的方式按广度优先对图或树节点进行访问,可以使用并行流提高效率。
eg:
Tree root = // 构建树结构
// 搜索树结构中所有级别为3的节点,并按权重排序
List<Tree> thirdLevelNodes = StreamUtil.iterateHierarchies(root, Tree:getChildren)
.filter(node -> node.getLevel() == 3)
.sorted(Comparator.comparing(Tree::getWeight))
.toList();
T - 元素类型root - 根节点,根节点不允许被filter过滤discoverer - 下一层级节点的获取方法filter - 节点过滤器,不匹配的节点与以其作为根节点的子树将将会被忽略HierarchyIteratorpublic static <T> Stream<T> iterateHierarchies(T root, Function<T,Collection<T>> discoverer)
指定一个层级结构的根节点(通常是树或图),
然后获取包含根节点在内,根节点所有层级结构中的节点组成的流。
该方法用于以平铺的方式按广度优先对图或树节点进行访问,可以使用并行流提高效率。
eg:
Tree root = // 构建树结构
// 搜索树结构中所有级别为3的节点,并按权重排序
List<Tree> thirdLevelNodes = StreamUtil.iterateHierarchies(root, Tree:getChildren)
.filter(node -> node.getLevel() == 3)
.sorted(Comparator.comparing(Tree::getWeight))
.toList();
T - 元素类型root - 根节点,根节点不允许被filter过滤discoverer - 下一层级节点的获取方法HierarchyIteratorpublic static <T> Stream<T> takeWhile(Stream<T> source, Predicate<? super T> predicate)
与 jdk9 中的 takeWhile 方法不太一样, 这里的实现是个 顺序的、有状态的中间操作
本环节中是顺序执行的, 但是后续操作可以支持并行流
但是不建议在并行流中使用, 除非你确定 takeWhile 之后的操作能在并行流中受益很多
T - 元素类型source - 源流predicate - 断言public static <T> Stream<T> dropWhile(Stream<T> source, Predicate<? super T> predicate)
与 jdk9 中的 dropWhile 方法不太一样, 这里的实现是个 顺序的、有状态的中间操作
本环节中是顺序执行的, 但是后续操作可以支持并行流
但是不建议在并行流中使用, 除非你确定 dropWhile 之后的操作能在并行流中受益很多
T - 元素类型source - 源流predicate - 断言Copyright © 2025. All rights reserved.