Package org.aoju.bus.core.toolkit
Class IterKit
java.lang.Object
org.aoju.bus.core.toolkit.IterKit
- 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: 3根据集合返回一个元素计数的Map所谓元素计数就是假如这个集合中某个元素出现了n次,那将这个元素做为key,n做为value 例如:[a,b,c,c,c] 得到: a: 1 b: 1 c: 3static <T> Iterator<T>empty()返回一个空Iteratorstatic <K,V> Map<K, V> fieldValueAsMap(Iterator<?> iterator, String fieldNameForKey, String fieldNameForValue) 两个字段值组成新的Mapstatic <V,R> List<R> fieldValueList(Iterable<V> iterable, String fieldName) 获取指定Bean列表中某个字段,生成新的列表static <V,R> List<R> fieldValueList(Iterator<V> iterator, String fieldName) 获取指定Bean列表中某个字段,生成新的列表static <K,V> Map<K, V> fieldValueMap(Iterable<V> iterable, String fieldName) 字段值与列表值对应的Map,常用于元素对象中有唯一ID时需要按照这个ID查找对象的情况 例如:车牌号 = 车static <K,V> Map<K, V> fieldValueMap(Iterator<V> iterator, String fieldName) 字段值与列表值对应的Map,常用于元素对象中有唯一ID时需要按照这个ID查找对象的情况 例如:车牌号 = 车static <E> Iterator<E>过滤集合,此方法在原集合上直接修改 通过实现Filter接口,完成元素的过滤,这个Filter实现可以实现以下功能:static <T extends Iterable<E>,E>
T过滤集合,此方法在原集合上直接修改 通过实现Filter接口,完成元素的过滤,这个Filter实现可以实现以下功能:static <E> FilterIterator<E>获取一个新的FilterIterator,用于过滤指定元素static <E> List<E>filterToList(Iterator<E> iter, Predicate<E> filter) 过滤Iterator并将过滤后满足条件的元素添加到List中static <E> voidstatic <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 <E> E遍历Iterator,获取指定index位置的元素static Class<?>getElementType(Iterable<?> iterable) 获得Iterable对象的元素类型(通过第一个非空元素判断) 注意,此方法至少会调用多次next方法static Class<?>getElementType(Iterator<?> iterator) 获得Iterator对象的元素类型(通过第一个非空元素判断) 注意,此方法至少会调用多次next方法static <T> T获取集合的第一个元素static <T> T获取集合的第一个元素static <T> TgetFirstNoneNull(Iterable<T> iterable) 获取集合的第一个非空元素static <T> TgetFirstNoneNull(Iterator<T> iterator) 获取集合的第一个非空元素static <T> TgetFirstNoneNull(Iterator<T> iterator, Matcher<T> matcher) 返回Iterator中第一个匹配规则的值static boolean是否包含null元素static boolean是否包含null元素static boolean是否全部元素为nullstatic boolean是否全部元素为nullstatic booleanIterable是否为空static booleanIterator是否为空static booleanisEqualList(Iterable<?> list1, Iterable<?> list2) 判断两个Iterable是否元素和顺序相同,返回true的条件是: 两个Iterable必须长度相同 两个Iterable元素相同index的对象必须equals,满足Objects.equals(Object, Object)此方法来自Apache-Commons-Collections4。static booleanisNotEmpty(Iterable<?> iterable) Iterable是否为空static booleanisNotEmpty(Iterator<?> iterator) Iterator是否为空static <T> Stringjoin(Iterable<T> iterable, CharSequence conjunction) 以 conjunction 为分隔符将集合转换为字符串static <T> Stringjoin(Iterable<T> iterable, CharSequence conjunction, String prefix, String suffix) 以 conjunction 为分隔符将集合转换为字符串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 int返回 Iterable 对象的元素数量static int返回 Iterator 对象的元素数量static <E> List<E>Iterator转List 不判断,直接生成新的Liststatic <E> List<E>Iterator转List 不判断,直接生成新的List将列表转成值为List的HashMap将列表转成值为List的HashMaptoListMap(Map<K, List<V>> resultMap, Iterable<T> iterable, Function<T, K> keyMapper, Function<T, V> valueMapper) 将列表转成值为List的HashMapstatic <K,V> HashMap<K, V> 将Entry集合转换为HashMapstatic <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, E> Map<K, V> 集合转换为Map,转换规则为: 按照keyFunc函数规则根据元素对象生成Key,按照valueFunc函数规则根据元素对象生成value组成新的Mapstatic <K,V> Map<K, V> 将键列表和值列表转换为Map 以键为准,值与键位置需对应 如果键元素数多于值元素,多余部分值用null代替 如果值多于键,忽略多余的值static <K,V> Map<K, V> 将键列表和值列表转换为Map 以键为准,值与键位置需对应 如果键元素数多于值元素,多余部分值用null代替 如果值多于键,忽略多余的值static <K,V> Map<K, V> Iterator转换为Map,转换规则为: 按照keyFunc函数规则根据元素对象生成Key,元素作为值static <T,K, V> Map<K, V> 将列表转成Mapstatic <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为字符串
-
Constructor Details
-
IterKit
public IterKit()
-
-
Method Details
-
isEmpty
Iterable是否为空- Parameters:
iterable- Iterable对象- Returns:
- 是否为空
-
isEmpty
Iterator是否为空- Parameters:
iterator- Iterator对象- Returns:
- 是否为空
-
isNotEmpty
Iterable是否为空- Parameters:
iterable- Iterable对象- Returns:
- 是否为空
-
isNotEmpty
Iterator是否为空- Parameters:
iterator- Iterator对象- Returns:
- 是否为空
-
isEqualList
判断两个Iterable是否元素和顺序相同,返回true的条件是:- 两个
Iterable必须长度相同 - 两个
Iterable元素相同index的对象必须equals,满足Objects.equals(Object, Object)
- Parameters:
list1- 列表1list2- 列表2- Returns:
- 是否相同
- 两个
-
hasNull
是否包含null元素- Parameters:
iterable- 被检查的Iterable对象,如果为null返回true- Returns:
- 是否包含
null元素
-
hasNull
是否包含null元素- Parameters:
iterator- 被检查的Iterator对象,如果为null返回true- Returns:
- 是否包含
null元素
-
isAllNull
是否全部元素为null- Parameters:
iterable- iter 被检查的Iterable对象,如果为null返回true- Returns:
- 是否全部元素为null
-
isAllNull
是否全部元素为null- Parameters:
iterator- iter 被检查的Iterator对象,如果为null返回true- Returns:
- 是否全部元素为null
-
countMap
根据集合返回一个元素计数的Map所谓元素计数就是假如这个集合中某个元素出现了n次,那将这个元素做为key,n做为value 例如:[a,b,c,c,c] 得到: a: 1 b: 1 c: 3 -
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:
iterable- 对象列表fieldName- 字段名(会通过反射获取其值)- Returns:
- 某个字段值与对象对应Map
-
fieldValueMap
字段值与列表值对应的Map,常用于元素对象中有唯一ID时需要按照这个ID查找对象的情况 例如:车牌号 = 车- Type Parameters:
K- 字段名对应值得类型,不确定请使用ObjectV- 对象类型- Parameters:
iterator- 对象列表fieldName- 字段名(会通过反射获取其值)- Returns:
- 某个字段值与对象对应Map
-
fieldValueAsMap
public static <K,V> Map<K,V> fieldValueAsMap(Iterator<?> iterator, String fieldNameForKey, String fieldNameForValue) 两个字段值组成新的Map- Type Parameters:
K- 字段名对应值得类型,不确定请使用ObjectV- 值类型,不确定使用Object- Parameters:
iterator- 对象列表fieldNameForKey- 做为键的字段名(会通过反射获取其值)fieldNameForValue- 做为值的字段名(会通过反射获取其值)- Returns:
- 某个字段值与对象对应Map
-
fieldValueList
获取指定Bean列表中某个字段,生成新的列表- Type Parameters:
V- 对象类型R- 返回元素类型- Parameters:
iterable- 对象列表fieldName- 字段名(会通过反射获取其值)- Returns:
- 某个字段值与对象对应Map
-
fieldValueList
获取指定Bean列表中某个字段,生成新的列表- Type Parameters:
V- 对象类型R- 返回元素类型- Parameters:
iterator- 对象列表fieldName- 字段名(会通过反射获取其值)- Returns:
- 某个字段值与对象对应Map
-
join
以 conjunction 为分隔符将集合转换为字符串- Type Parameters:
T- 集合元素类型- Parameters:
iterable-Iterableconjunction- 分隔符- Returns:
- 连接后的字符串
-
join
public static <T> String join(Iterable<T> iterable, CharSequence conjunction, String prefix, String suffix) 以 conjunction 为分隔符将集合转换为字符串- Type Parameters:
T- 集合元素类型- Parameters:
iterable-Iterableconjunction- 分隔符prefix- 每个元素添加的前缀,null表示不添加suffix- 每个元素添加的后缀,null表示不添加- Returns:
- 连接后的字符串
-
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
将Entry集合转换为HashMap- Type Parameters:
K- 键类型V- 值类型- Parameters:
entryIter- entry集合- 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
-
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的HashMap- 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
-
toMap
public static <T,K, Map<K,V> V> toMap(Map<K, V> resultMap, Iterable<T> iterable, Function<T, K> keyMapper, Function<T, V> valueMapper) 将列表转成Map- Type Parameters:
T- 列表值类型K- 键类型V- 值类型- Parameters:
resultMap- 结果Map,通过传入map对象决定结果的Map类型iterable- 值列表keyMapper- Map的键映射valueMapper- Map的值映射- Returns:
- HashMap
-
toList
Iterator转List 不判断,直接生成新的List- Type Parameters:
E- 元素类型- Parameters:
iterable-Iterator- Returns:
- List
-
toList
Iterator转List 不判断,直接生成新的List- Type Parameters:
E- 元素类型- Parameters:
iterator-Iterator- Returns:
- List
-
asIterator
Enumeration转换为IteratorAdapt the specified
Enumerationto theIteratorinterface- Type Parameters:
E- 集合元素类型- Parameters:
e-Enumeration- Returns:
Iterator
-
asIterable
-
getFirst
获取集合的第一个元素- Type Parameters:
T- 集合元素类型- Parameters:
iterable-Iterable- Returns:
- 第一个元素
-
getFirst
获取集合的第一个元素- Type Parameters:
T- 集合元素类型- Parameters:
iterator-Iterator- Returns:
- 第一个元素
-
getFirstNoneNull
获取集合的第一个非空元素- Type Parameters:
T- 集合元素类型- Parameters:
iterable-Iterable- Returns:
- 第一个元素
-
getFirstNoneNull
获取集合的第一个非空元素- Type Parameters:
T- 集合元素类型- Parameters:
iterator-Iterator- Returns:
- 第一个非空元素,null表示未找到
-
getFirstNoneNull
返回Iterator中第一个匹配规则的值 -
getElementType
获得Iterable对象的元素类型(通过第一个非空元素判断) 注意,此方法至少会调用多次next方法- Parameters:
iterable-Iterable- Returns:
- 元素类型, 当列表为空或元素全部为null时, 返回null
-
getElementType
获得Iterator对象的元素类型(通过第一个非空元素判断) 注意,此方法至少会调用多次next方法- Parameters:
iterator-Iterator,为null返回null- Returns:
- 元素类型,当列表为空或元素全部为
null时,返回null
-
filter
过滤集合,此方法在原集合上直接修改 通过实现Filter接口,完成元素的过滤,这个Filter实现可以实现以下功能:过滤出需要的对象,
Predicate.test(Object)方法 返回false的对象将被使用Iterator.remove()方法移除- Type Parameters:
T- 集合类型E- 集合元素类型- Parameters:
iterable- 集合filter- 过滤器接口- Returns:
- 编辑后的集合
-
filter
过滤集合,此方法在原集合上直接修改 通过实现Filter接口,完成元素的过滤,这个Filter实现可以实现以下功能:过滤出需要的对象,
Predicate.test(Object)方法 返回false的对象将被使用Iterator.remove()方法移除- Type Parameters:
E- 集合元素类型- Parameters:
iterator- 集合filter- 过滤器接口,删除Predicate.test(Object)为false的元素- Returns:
- 编辑后的集合
-
filterToList
过滤Iterator并将过滤后满足条件的元素添加到List中- Type Parameters:
E- 元素类型- Parameters:
iter-Iteratorfilter- 过滤器,保留Predicate.test(Object)为true的元素- Returns:
- the list
-
filtered
public static <E> FilterIterator<E> filtered(Iterator<? extends E> iterator, Predicate<? super E> filter) 获取一个新的FilterIterator,用于过滤指定元素- Type Parameters:
E- 元素类型- Parameters:
iterator- 被包装的Iteratorfilter- 过滤断言,当Predicate.test(Object)为true时保留元素,false抛弃元素- Returns:
FilterIterator
-
toMap
Iterator转换为Map,转换规则为: 按照keyFunc函数规则根据元素对象生成Key,元素作为值- Type Parameters:
K- Map键类型V- Map值类型- Parameters:
iterator- 数据列表map- Map对象,转换后的键值对加入此Map,通过传入此对象自定义Map类型keyFunc- 生成key的函数- Returns:
- 生成的map
-
toMap
public static <K,V, Map<K,E> V> toMap(Iterator<E> iterator, Map<K, V> map, XFunction<E, K> keyFunc, XFunction<E, V> valueFunc) 集合转换为Map,转换规则为: 按照keyFunc函数规则根据元素对象生成Key,按照valueFunc函数规则根据元素对象生成value组成新的Map- Type Parameters:
K- Map键类型V- Map值类型E- 元素类型- Parameters:
iterator- 数据列表map- Map对象,转换后的键值对加入此Map,通过传入此对象自定义Map类型keyFunc- 生成key的函数valueFunc- 生成值的策略函数- Returns:
- 生成的map
-
empty
返回一个空Iterator- Type Parameters:
T- 元素类型- Returns:
- 空Iterator
- See Also:
-
size
返回 Iterable 对象的元素数量- Parameters:
iterable- Iterable对象- Returns:
- Iterable对象的元素数量
-
size
返回 Iterator 对象的元素数量- Parameters:
iterator- Iterator对象- Returns:
- Iterator对象的元素数量
-
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:
- 字符串
-
get
获取Iterator -
get
遍历Iterator,获取指定index位置的元素- Type Parameters:
E- 元素类型- Parameters:
iterator-Iteratorindex- 位置- Returns:
- 元素,找不到元素返回
null
-
get
从给定的对象中获取可能存在的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
-