Package | Description |
---|---|
org.dromara.hutool.core.lang |
语言特性包,包括大量便捷的数据结构,包括:
ANSI:ANSI编码
Builder:构建器
Caller:查找调用者
Copier:拷贝(复制)
Generator:生成器
Getter:getXXX抽象
Intern:规范化表示形式
Loader:加载器的抽象
Mutable:可变值对象封装
Range:区间和边界封装
Tuple:元组
|
org.dromara.hutool.core.stream |
Java8的stream相关封装
|
Modifier and Type | Method and Description |
---|---|
EasyStream<T> |
Opt.toEasyStream()
转换为
EasyStream 对象 |
Modifier and Type | Method and Description |
---|---|
static <T> EasyStream<T> |
EasyStream.concat(Stream<? extends T> a,
Stream<? extends T> b)
创建一个惰性拼接流,其元素是第一个流的所有元素,然后是第二个流的所有元素。
|
default <F> EasyStream<T> |
TransformableWrappedStream.distinct(Function<? super T,F> keyExtractor)
返回一个具有去重特征的流 非并行流(顺序流)下对于重复元素,保留遇到顺序中最先出现的元素,并行流情况下不能保证具体保留哪一个
这是一个有状态中间操作
|
default EasyStream<T> |
WrappedStream.easyStream()
转换为EasyStream
|
static <T> EasyStream<T> |
EasyStream.empty()
返回空的串行流
|
default <R> EasyStream<R> |
TransformableWrappedStream.flat()
如果当前元素是集合,则会将集合中的元素解构出来
例如:
List<List<List<String>>> 解构成 List<String> |
default <R> EasyStream<R> |
TransformableWrappedStream.flat(Function<? super T,? extends Iterable<? extends R>> mapper)
扩散流操作,可能影响流元素个数,将原有流元素执行mapper操作, 转换为迭代器元素,
最后返回所有迭代器的所有元素组成的流
这是一个无状态中间操作 例如,将users里所有user的id和parentId组合在一起,形成一个新的流:
EasyStream<Long> ids = EasyStream.of(users).flat(user -> FastStream.of(user.getId(), user.getParentId()));
|
<R> EasyStream<R> |
EntryStream.flatMap(Function<? super Map.Entry<K,V>,? extends Stream<? extends R>> mapper)
扩散流操作,可能影响流元素个数,将原有流元素执行mapper操作,返回多个流所有元素组成的流
这是一个无状态中间操作 例如,将users里所有user的id和parentId组合在一起,形成一个新的流:
FastStream<Long> ids = FastStream.of(users).flatMap(user -> FastStream.of(user.getId(), user.getParentId()));
|
default <R> EasyStream<R> |
TransformableWrappedStream.flatMap(Function<? super T,? extends Stream<? extends R>> mapper)
扩散流操作,可能影响流元素个数,将原有流元素执行mapper操作,返回多个流所有元素组成的流
这是一个无状态中间操作 例如,将users里所有user的id和parentId组合在一起,形成一个新的流:
EasyStream<Long> ids = EasyStream.of(users).flatMap(user -> FastStream.of(user.getId(), user.getParentId()));
|
default <R> EasyStream<R> |
TransformableWrappedStream.flatMapIdx(BiFunction<? super T,Integer,? extends Stream<? extends R>> mapper)
扩散流操作,可能影响流元素个数,将原有流元素执行mapper操作,返回多个流所有元素组成的流,操作带下标
|
default <R> EasyStream<R> |
TransformableWrappedStream.flatNonNull(Function<? super T,? extends Iterable<? extends R>> mapper)
扩散流操作,可能影响流元素个数,对过滤后的非
null 元素执行mapper操作,转换为迭代器,
并过滤迭代器中为null 的元素, 返回所有迭代器的所有非空元素组成的流这是一个无状态中间操作 |
static <T> EasyStream<T> |
EasyStream.generate(Supplier<T> s)
返回无限串行无序流
其中每一个元素都由给定的
Supplier 生成
适用场景在一些生成常量流、随机元素等 |
static <T> EasyStream<T> |
EasyStream.iterate(T seed,
Predicate<? super T> hasNext,
UnaryOperator<T> next)
返回无限有序流
该流由 初始值 然后判断条件 以及执行 迭代函数 进行迭代获取到元素
例如
FastStream.iterate(0, i -> i < 3, i -> ++i)
就可以创建包含元素0,1,2的流,使用WrappedStream.limit(long) 可以限制元素个数
|
static <T> EasyStream<T> |
EasyStream.iterate(T seed,
UnaryOperator<T> f)
返回无限有序流
该流由 初始值 以及执行 迭代函数 进行迭代获取到元素
例如
FastStream.iterate(0, i -> i + 1)
就可以创建从0开始,每次+1的无限流,使用WrappedStream.limit(long) 可以限制元素个数
|
static <T> EasyStream<T> |
EasyStream.iterateHierarchies(T root,
Function<T,Collection<T>> discoverer)
指定一个层级结构的根节点(通常是树或图),
然后获取包含根节点在内,根节点所有层级结构中的节点组成的流。
|
static <T> EasyStream<T> |
EasyStream.iterateHierarchies(T root,
Function<T,Collection<T>> discoverer,
Predicate<T> filter)
指定一个层级结构的根节点(通常是树或图),
然后获取包含根节点在内,根节点所有层级结构中的节点组成的流。
|
<N> EasyStream<N> |
EntryStream.map(BiFunction<? super K,? super V,? extends N> mapper)
将实例转为根据键值对生成的单对象
Stream 实例 |
<R> EasyStream<R> |
EntryStream.map(Function<? super Map.Entry<K,V>,? extends R> mapper)
返回与指定函数将元素作为参数执行的结果组成的流
这是一个无状态中间操作
|
default <R> EasyStream<R> |
TransformableWrappedStream.map(Function<? super T,? extends R> mapper)
返回与指定函数将元素作为参数执行的结果组成的流
这是一个无状态中间操作
|
<R> EasyStream<R> |
EasyStream.map(Function<? super T,? extends R> mapper)
返回与指定函数将元素作为参数执行的结果组成的流
这是一个无状态中间操作
|
default <R> EasyStream<R> |
TransformableWrappedStream.mapIdx(BiFunction<? super T,Integer,? extends R> mapper)
返回与指定函数将元素作为参数执行的结果组成的流,操作带下标
|
default <R> EasyStream<R> |
TransformableWrappedStream.mapMulti(BiConsumer<? super T,? super Consumer<R>> mapper)
扩散流操作,可能影响流元素个数,将原有流元素执行mapper操作,返回多个流所有元素组成的流,操作带一个方法,调用该方法可增加元素
这是一个无状态中间操作
|
default <R> EasyStream<R> |
TransformableWrappedStream.mapNonNull(Function<? super T,? extends R> mapper)
返回 元素 转换后 并且不为
null 的 新元素组成的流这是一个无状态中间操作
// 等价于先调用map再调用nonNull
.nonNull().map(...).nonNull()...
|
static <T> EasyStream<T> |
EasyStream.of(Iterable<T> iterable)
通过实现了
Iterable 接口的对象创建串行流,若输入对象为null ,则返回一个空的串行流 |
static <T> EasyStream<T> |
EasyStream.of(Iterable<T> iterable,
boolean parallel)
通过传入的
Iterable 创建流,若输入对象为null ,则返回一个空的串行流 |
static <T> EasyStream<T> |
EasyStream.of(Stream<T> stream)
通过传入的
Stream 创建流,若输入对象为null ,则返回一个空的串行流 |
static <T> EasyStream<T> |
EasyStream.of(T... values)
返回包含指定元素的串行流,若输入数组为
null 或空,则返回一个空的串行流 |
static <T> EasyStream<T> |
EasyStream.of(T t)
返回包含单个元素的串行流
|
static EasyStream<String> |
EasyStream.split(CharSequence str,
String regex)
拆分字符串,转换为串行流
|
default EasyStream<EasyStream<T>> |
TransformableWrappedStream.split(int batchSize)
按指定长度切分为双层流
形如:[1,2,3,4,5] -> [[1,2], [3,4], [5,6]]
|
default EasyStream<List<T>> |
TransformableWrappedStream.splitList(int batchSize)
按指定长度切分为元素为list的流
形如:[1,2,3,4,5] -> [[1,2], [3,4], [5,6]]
|
EasyStream<K> |
EntryStream.toKeyStream()
转为键的流
|
EasyStream<V> |
EntryStream.toValueStream()
转为值的流
|
EasyStream<T> |
EasyStream.wrap(Stream<T> stream)
根据一个原始的流,返回一个新包装类实例
|
default <U,R> EasyStream<R> |
TransformableWrappedStream.zip(Iterable<U> other,
BiFunction<? super T,? super U,? extends R> zipper)
将 现有元素 与 给定迭代器中对应位置的元素 使用 zipper 转换为新的元素,并返回新元素组成的流
新流的数量为两个集合中较小的数量, 即, 只合并下标位置相同的部分 |
Modifier and Type | Method and Description |
---|---|
default EasyStream<EasyStream<T>> |
TransformableWrappedStream.split(int batchSize)
按指定长度切分为双层流
形如:[1,2,3,4,5] -> [[1,2], [3,4], [5,6]]
|
static <T> Collector<T,?,EasyStream<T>> |
CollectorUtil.toEasyStream()
将流转为
EasyStream |
Copyright © 2025. All rights reserved.