Package org.miaixz.bus.core.xyz
Class IteratorKit
java.lang.Object
org.miaixz.bus.core.xyz.IteratorKit
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic <E> Iterable<E> asIterable(Iterator<E> iter) static <E> Iterator<E> asIterator(Enumeration<E> e) Enumeration转换为Iteratorstatic void清空指定Iterator,此方法遍历后调用Iterator.remove()移除每个元素根据集合返回一个元素计数的Map所谓元素计数就是假如这个集合中某个元素出现了n次,那将这个元素做为key,n做为value 例如:[a,b,c,c,c] 得到: a: 1 b: 1 c: 3static <T> List<T> edit(Iterator<T> iter, UnaryOperator<T> editor) 编辑,此方法产生一个新ArrayList编辑过程通过传入的Editor实现来返回需要的元素内容,这个Editor实现可以实现以下功能:static <T> Iterator<T> empty()返回一个空Iteratorstatic <K,V> Map <K, V> fieldValueAsMap(Iterator<?> iter, String fieldNameForKey, String fieldNameForValue) 两个字段值组成新的Mapstatic <V,R> List <R> fieldValueList(Iterable<V> iterable, String fieldName) 获取指定Bean列表中某个字段,生成新的列表static <V,R> List <R> fieldValueList(Iterator<V> iter, String fieldName) 获取指定Bean列表中某个字段,生成新的列表static <K,V> Map <K, V> fieldValueMap(Iterator<V> iter, String fieldName) 字段值与列表值对应的Map,常用于元素对象中有唯一ID时需要按照这个ID查找对象的情况 例如:车牌号 = 车static <E> FilterIterator<E> 获取一个新的FilterIterator,用于过滤指定元素static <E> List<E> filterToList(Iterator<E> iter, Predicate<E> predicate) 过滤Iterator并将过滤后满足条件的元素添加到List中static <E> voidstatic <E> E遍历Iterator,获取指定index位置的元素static Class<?> getElementType(Iterable<?> iterable) 获得Iterable对象的元素类型(通过第一个非空元素判断) 注意,此方法至少会调用多次next方法static Class<?> getElementType(Iterator<?> iterator) 获得Iterator对象的元素类型(通过第一个非空元素判断) 注意,此方法至少会调用多次next方法static <T> T获取集合的第一个元素static <T> T返回Iterator中第一个匹配规则的值static <T> TgetFirstNoneNull(Iterator<T> iterator) 获取集合的第一个非空元素static <T> Iterator<T> 获取Iteratorstatic Iterator<?> 从给定的对象中获取可能存在的Iterator,规则如下: null - null Iterator - 直接返回 Enumeration -EnumerationIteratorCollection - 调用Collection.iterator()Map - Entry的IteratorDictionary - values (elements) enumeration returned as iterator array -ArrayIteratorNodeList -NodeListIteratorNode - 子节点 object with iterator() public method,通过反射访问 object - 单对象的ArrayIteratorstatic booleanhasBlank(Iterable<? extends CharSequence> args) 指定字符串集合中,是否包含空字符串。static boolean是否包含null元素 Iterator为null,返回trueIterator为空集合,即元素个数为0,返回falseIterator中元素为"",返回falsestatic booleanisAllBlank(Iterable<? extends CharSequence> args) static boolean是否全部元素为nullstatic boolean是否全部元素为nullstatic booleanIterable是否为空static booleanIterator是否为空static booleanisEqualList(Iterable<?> iterable1, Iterable<?> iterable2) 判断两个Iterable中的元素与其顺序是否相同 当满足下列情况时返回true: 两个Iterable都为null; 两个Iterable满足iterable1 == iterable2; 两个Iterable所有具有相同下标的元素皆满足Objects.equals(Object, Object); 此方法来自Apache-Commons-Collections4。static booleanisNotEmpty(Iterable<?> iterable) Iterable是否为空static booleanisNotEmpty(Iterator<?> iterator) Iterator是否为空static <T> Stringjoin(Iterator<T> iterator, CharSequence conjunction) static <T> Stringjoin(Iterator<T> iterator, CharSequence conjunction, String prefix, String suffix) static <T> Stringjoin(Iterator<T> iterator, CharSequence conjunction, Function<T, ? extends CharSequence> func) static <E> Iterator<E> 移除集合中满足条件的所有元素,此方法在原集合上直接修改 通过实现Predicate接口,完成元素的移除,可以实现以下功能:static int返回 Iterable 对象的元素数量static int返回 Iterator 对象的元素数量将列表转成值为List的HashMap将列表转成值为List的HashMaptoListMap(Map<K, List<V>> resultMap, Iterable<T> iterable, Function<T, K> keyMapper, Function<T, V> valueMapper) 将列表转成值为List的Map集合static <K,V> Map <K, V> 将键列表和值列表转换为Map 以键为准,值与键位置需对应。如果键元素数多于值元素,多余部分值用null代替。 如果值多于键,忽略多余的值。static <K,V> Map <K, V> 将键列表和值列表转换为Map 以键为准,值与键位置需对应。如果键元素数多于值元素,多余部分值用null代替。 如果值多于键,忽略多余的值。static <T,K, V> Map <K, V> 将列表转成HashMapstatic <K,V> Map <K, V> 将列表转成HashMapstatic <K,V> Map <K, V> 将键列表和值列表转换为Map 以键为准,值与键位置需对应。如果键元素数多于值元素,多余部分值用null代替。 如果值多于键,忽略多余的值。static <K,V> Map <K, V> 将键列表和值列表转换为Map 以键为准,值与键位置需对应。如果键元素数多于值元素,多余部分值用null代替。 如果值多于键,忽略多余的值。static <E> String拼接Iterator为字符串static <E> String拼接Iterator为字符串static <E> StringtoString(Iterator<E> iterator, Function<? super E, String> transFunc, String delimiter, String prefix, String suffix) 拼接Iterator为字符串static <F,T> Iterator <T>
-
Constructor Details
-
IteratorKit
public IteratorKit()
-
-
Method Details
-
getIter
获取Iterator -
isEmpty
Iterable是否为空- Parameters:
iterable- Iterable对象- Returns:
- 是否为空
-
isEmpty
Iterator是否为空- Parameters:
iterator- Iterator对象- Returns:
- 是否为空
-
isNotEmpty
Iterable是否为空- Parameters:
iterable- Iterable对象- Returns:
- 是否为空
-
isNotEmpty
Iterator是否为空- Parameters:
iterator- Iterator对象- Returns:
- 是否为空
-
hasNull
是否包含null元素- Iterator为
null,返回true - Iterator为空集合,即元素个数为0,返回
false - Iterator中元素为"",返回
false
- Parameters:
iter- 被检查的Iterator对象,如果为null返回true- Returns:
- 是否包含
null元素
- Iterator为
-
isAllNull
是否全部元素为null- Parameters:
iter- iterator 被检查的Iterable对象,如果为null返回true- Returns:
- 是否全部元素为null
-
isAllNull
是否全部元素为null- Parameters:
iter- iterator 被检查的Iterator对象,如果为null返回true- Returns:
- 是否全部元素为null
-
hasBlank
指定字符串集合中,是否包含空字符串。- Parameters:
args- 字符串列表- Returns:
- 批量判断字符串是否全部为空白
-
isAllBlank
- Parameters:
args- 字符串列表- Returns:
- 批量判断字符串是否全部为空白
-
countMap
根据集合返回一个元素计数的Map所谓元素计数就是假如这个集合中某个元素出现了n次,那将这个元素做为key,n做为value 例如:[a,b,c,c,c] 得到: a: 1 b: 1 c: 3 -
fieldValueMap
字段值与列表值对应的Map,常用于元素对象中有唯一ID时需要按照这个ID查找对象的情况 例如:车牌号 = 车- Type Parameters:
K- 字段名对应值得类型,不确定请使用ObjectV- 对象类型- Parameters:
iter- 对象列表fieldName- 字段名(会通过反射获取其值)- Returns:
- 某个字段值与对象对应Map
-
fieldValueAsMap
public static <K,V> Map<K,V> fieldValueAsMap(Iterator<?> iter, String fieldNameForKey, String fieldNameForValue) 两个字段值组成新的Map- Type Parameters:
K- 字段名对应值得类型,不确定请使用ObjectV- 值类型,不确定使用Object- Parameters:
iter- 对象列表fieldNameForKey- 做为键的字段名(会通过反射获取其值)fieldNameForValue- 做为值的字段名(会通过反射获取其值)- Returns:
- 某个字段值与对象对应Map
-
fieldValueList
获取指定Bean列表中某个字段,生成新的列表- Type Parameters:
V- 对象类型R- 返回元素类型- Parameters:
iterable- 对象列表fieldName- 字段名(会通过反射获取其值)- Returns:
- 某个字段值与对象对应Map
-
fieldValueList
获取指定Bean列表中某个字段,生成新的列表- Type Parameters:
V- 对象类型R- 返回元素类型- Parameters:
iter- 对象列表fieldName- 字段名(会通过反射获取其值)- Returns:
- 某个字段值与对象对应Map
-
join
- Type Parameters:
T- 集合元素类型- Parameters:
iterator- 集合conjunction- 分隔符- Returns:
- 连接后的字符串
-
join
public static <T> String join(Iterator<T> iterator, CharSequence conjunction, String prefix, String suffix) - Type Parameters:
T- 集合元素类型- Parameters:
iterator- 集合conjunction- 分隔符prefix- 每个元素添加的前缀,null表示不添加suffix- 每个元素添加的后缀,null表示不添加- Returns:
- 连接后的字符串
-
join
public static <T> String join(Iterator<T> iterator, CharSequence conjunction, Function<T, ? extends CharSequence> func) - Type Parameters:
T- 集合元素类型- Parameters:
iterator- 集合conjunction- 分隔符func- 集合元素转换器,将元素转换为字符串- Returns:
- 连接后的字符串
-
toMap
将键列表和值列表转换为Map 以键为准,值与键位置需对应。如果键元素数多于值元素,多余部分值用null代替。 如果值多于键,忽略多余的值。- Type Parameters:
K- 键类型V- 值类型- Parameters:
keys- 键列表values- 值列表- Returns:
- 标题内容Map
-
toMap
将键列表和值列表转换为Map 以键为准,值与键位置需对应。如果键元素数多于值元素,多余部分值用null代替。 如果值多于键,忽略多余的值。- Type Parameters:
K- 键类型V- 值类型- Parameters:
keys- 键列表values- 值列表isOrder- 是否有序- Returns:
- 标题内容Map
-
toMap
将键列表和值列表转换为Map 以键为准,值与键位置需对应。如果键元素数多于值元素,多余部分值用null代替。 如果值多于键,忽略多余的值。- Type Parameters:
K- 键类型V- 值类型- Parameters:
keys- 键列表values- 值列表- Returns:
- 标题内容Map
-
toMap
将键列表和值列表转换为Map 以键为准,值与键位置需对应。如果键元素数多于值元素,多余部分值用null代替。 如果值多于键,忽略多余的值。- Type Parameters:
K- 键类型V- 值类型- Parameters:
keys- 键列表values- 值列表isOrder- 是否有序- Returns:
- 标题内容Map
-
toListMap
将列表转成值为List的HashMap- Type Parameters:
K- 键类型V- 值类型- Parameters:
iterable- 值列表keyMapper- Map的键映射- Returns:
- HashMap
-
toListMap
public static <T,K, Map<K,V> List<V>> toListMap(Iterable<T> iterable, Function<T, K> keyMapper, Function<T, V> valueMapper) 将列表转成值为List的HashMap- Type Parameters:
T- 列表值类型K- 键类型V- 值类型- Parameters:
iterable- 值列表keyMapper- Map的键映射valueMapper- Map中List的值映射- Returns:
- HashMap
-
toListMap
public static <T,K, Map<K,V> List<V>> toListMap(Map<K, List<V>> resultMap, Iterable<T> iterable, Function<T, K> keyMapper, Function<T, V> valueMapper) 将列表转成值为List的Map集合- Type Parameters:
T- 列表值类型K- 键类型V- 值类型- Parameters:
resultMap- 结果Map,可自定义结果Map类型iterable- 值列表keyMapper- Map的键映射valueMapper- Map中List的值映射- Returns:
- HashMap
-
toMap
将列表转成HashMap- Type Parameters:
K- 键类型V- 值类型- Parameters:
iterable- 值列表keyMapper- Map的键映射- Returns:
- HashMap
-
toMap
public static <T,K, Map<K,V> V> toMap(Iterable<T> iterable, Function<T, K> keyMapper, Function<T, V> valueMapper) 将列表转成HashMap- Type Parameters:
T- 列表值类型K- 键类型V- 值类型- Parameters:
iterable- 值列表keyMapper- Map的键映射valueMapper- Map的值映射- Returns:
- HashMap
-
asIterator
Enumeration转换为IteratorAdapt the specified
Enumerationto theIteratorinterface- Type Parameters:
E- 集合元素类型- Parameters:
e-Enumeration- Returns:
Iterator
-
asIterable
-
get
遍历Iterator,获取指定index位置的元素- Type Parameters:
E- 元素类型- Parameters:
iterator-Iteratorindex- 位置- Returns:
- 元素,找不到元素返回
null - Throws:
IndexOutOfBoundsException- index < 0时报错
-
getFirst
获取集合的第一个元素- Type Parameters:
T- 集合元素类型- Parameters:
iterator-Iterator- Returns:
- 第一个元素
-
getFirstNoneNull
获取集合的第一个非空元素- Type Parameters:
T- 集合元素类型- Parameters:
iterator-Iterator- Returns:
- 第一个非空元素,null表示未找到
-
getFirst
返回Iterator中第一个匹配规则的值 -
getElementType
获得Iterable对象的元素类型(通过第一个非空元素判断) 注意,此方法至少会调用多次next方法- Parameters:
iterable-Iterable- Returns:
- 元素类型,当列表为空或元素全部为null时,返回null
-
getElementType
获得Iterator对象的元素类型(通过第一个非空元素判断) 注意,此方法至少会调用多次next方法- Parameters:
iterator-Iterator,为null返回null- Returns:
- 元素类型,当列表为空或元素全部为
null时,返回null
-
edit
编辑,此方法产生一个新ArrayList编辑过程通过传入的Editor实现来返回需要的元素内容,这个Editor实现可以实现以下功能:1、过滤出需要的对象,如果返回null表示这个元素对象抛弃 2、修改元素对象,返回集合中为修改后的对象
- Type Parameters:
T- 集合元素类型- Parameters:
iter- 集合editor- 编辑器接口,null表示不编辑- Returns:
- 过滤后的集合
-
remove
移除集合中满足条件的所有元素,此方法在原集合上直接修改 通过实现Predicate接口,完成元素的移除,可以实现以下功能:1、移除指定对象,
Predicate.test(Object)方法返回true的对象将被使用Iterator.remove()方法移除。- Type Parameters:
E- 集合元素类型- Parameters:
iter- 集合predicate- 过滤器接口,删除Predicate.test(Object)为true的元素- Returns:
- 编辑后的集合
-
filterToList
过滤Iterator并将过滤后满足条件的元素添加到List中- Type Parameters:
E- 元素类型- Parameters:
iter-Iteratorpredicate- 过滤器,Predicate.test(Object)为true保留- Returns:
- ArrayList
-
filtered
public static <E> FilterIterator<E> filtered(Iterator<? extends E> iterator, Predicate<? super E> predicate) 获取一个新的FilterIterator,用于过滤指定元素- Type Parameters:
E- 元素类型- Parameters:
iterator- 被包装的Iteratorpredicate- 过滤断言,Predicate.test(Object)为true保留元素。- Returns:
FilterIterator
-
empty
返回一个空Iterator- Type Parameters:
T- 元素类型- Returns:
- 空Iterator
- See Also:
-
trans
-
size
返回 Iterable 对象的元素数量- Parameters:
iterable- Iterable对象- Returns:
- Iterable对象的元素数量
-
size
返回 Iterator 对象的元素数量- Parameters:
iterator- Iterator对象- Returns:
- Iterator对象的元素数量
-
isEqualList
判断两个
Iterable中的元素与其顺序是否相同 当满足下列情况时返回true:- 两个
Iterable都为null; - 两个
Iterable满足iterable1 == iterable2; - 两个
Iterable所有具有相同下标的元素皆满足Objects.equals(Object, Object);
- Parameters:
iterable1- 列表1iterable2- 列表2- Returns:
- 是否相同
- 两个
-
clear
清空指定Iterator,此方法遍历后调用Iterator.remove()移除每个元素- Parameters:
iterator-Iterator
-
forEach
- Type Parameters:
E- 元素类型- Parameters:
iterator-Iteratorconsumer- 节点消费,null表示不处理
-
toString
拼接Iterator为字符串- Type Parameters:
E- 元素类型- Parameters:
iterator-Iterator- Returns:
- 字符串
-
toString
拼接Iterator为字符串- Type Parameters:
E- 元素类型- Parameters:
iterator-IteratortransFunc- 元素转字符串函数- Returns:
- 字符串
-
toString
public static <E> String toString(Iterator<E> iterator, Function<? super E, String> transFunc, String delimiter, String prefix, String suffix) 拼接Iterator为字符串- Type Parameters:
E- 元素类型- Parameters:
iterator-IteratortransFunc- 元素转字符串函数delimiter- 分隔符prefix- 前缀suffix- 后缀- Returns:
- 字符串
-
getIter
从给定的对象中获取可能存在的Iterator,规则如下:- null - null
- Iterator - 直接返回
- Enumeration -
EnumerationIterator - Collection - 调用
Collection.iterator() - Map - Entry的
Iterator - Dictionary - values (elements) enumeration returned as iterator
- array -
ArrayIterator - NodeList -
NodeListIterator - Node - 子节点
- object with iterator() public method,通过反射访问
- object - 单对象的
ArrayIterator
-