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)
Stream
file
- 文件Stream
,如果提供的file为null
,返回Stream.empty()
public static Stream<String> of(Path path)
Stream
path
- 路径Stream
,如果提供的file为null
,返回Stream.empty()
public static Stream<String> of(File file, Charset charset)
Stream
file
- 文件charset
- 编码Stream
,如果提供的file为null
,返回Stream.empty()
public static Stream<String> of(Path path, Charset charset)
Stream
path
- 路径charset
- 编码Stream
,如果提供的path为null
,返回Stream.empty()
public static <T> Stream<T> of(T seed, UnaryOperator<T> elementCreator, int limit)
T
- 创建元素类型seed
- 初始值elementCreator
- 递进函数,每次调用此函数获取下一个值limit
- 限制个数Stream
public static <T> String join(Stream<T> stream, CharSequence delimiter)
T
- 元素类型stream
- Stream
delimiter
- 分隔符null
,返回null
public static <T> String join(Stream<T> stream, CharSequence delimiter, Function<T,? extends CharSequence> toStringFunc)
T
- 元素类型stream
- Stream
delimiter
- 分隔符toStringFunc
- 元素转换为字符串的函数null
,返回null
public 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
- 节点过滤器,不匹配的节点与以其作为根节点的子树将将会被忽略HierarchyIterator
public 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
- 下一层级节点的获取方法HierarchyIterator
public 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.