Package org.miaixz.bus.core.center.array
Class ArrayWrapper<A,E>
java.lang.Object
org.miaixz.bus.core.center.array.ArrayWrapper<A,E>
- Type Parameters:
A- 数组类型E- 数组元素类型
数组包装,提供一系列数组方法
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription将新元素添加到已有数组中 添加新元素会生成一个新的数组,不影响原数组appendArray(A array) 将新数组追加到已有数组中 追加新数组会生成一个新的数组,不影响原数组edit(UnaryOperator<E> editor) 对每个数组元素执行指定操作,替换元素为修改后的元素firstMatch(Predicate<E> matcher) 返回数组中第一个匹配规则的值返回数组中第一个非空元素get(int index) 获取数组对象中指定index的值,支持负数,例如-1表示倒数第一个值 如果数组下标越界,返回nullClass<?> 获得数组类型Class<?> 获取数组对象的元素类型,方法调用参数与返回结果举例: Object[] = Object.class String[] = String.class int[] = int.class Integer[] = Integer.class null = null String = nullgetRaw()获取原始对象getSub(int beginInclude, int endExclude) 获取子数组getSub(int beginInclude, int endExclude, int step) 获取子数组int返回数组中指定元素所在位置,未找到返回Normal.__1int返回数组中指定元素所在位置,未找到返回Normal.__1将新元素插入到已有数组中的某个位置 如果插入位置为负数,从原数组从后向前计数,若大于原数组长度,则空白处用默认值填充insertArray(int index, A arrayToInsert) 将新元素插入到已有数组中的某个位置 如果插入位置为负数,从原数组从后向前计数,若大于原数组长度,则空白处用默认值填充booleanisEmpty()数组是否为空boolean是否原始类型数组booleanisSorted(Comparator<E> comparator) 检查数组是否有序,升序或者降序booleanisSorted(Comparator<E> comparator, boolean isDESC) 数组是否有有序 反序,前一个小于后一个则返回错 正序,前一个大于后一个则返回错iterator()intlastIndexOf(Object value) 返回数组中指定最后的所在位置,未找到返回Normal.__1intlength()获取数组长度intmatchIndex(int offset, Predicate<E> matcher) 返回数组中第一个匹配规则的值的位置intmatchIndex(Predicate<E> matcher) 返回数组中第一个匹配规则的值的位置intmatchLastIndex(int offset, Predicate<E> matcher) 返回数组中最后一个匹配规则的值的位置(从后向前查找)intmatchLastIndex(Predicate<E> matcher) 返回数组中最后一个匹配规则的值的位置(从后向前查找)static <A,E> ArrayWrapper <A, E> of(A array) 包装数组为ArrayWrapperstatic <A,E> ArrayWrapper <A, E> 创建ArrayWrapper,创建一个指定长度的空数组从数组中的指定位置开始,按顺序使用新元素替换旧元素 如果 指定位置 为负数,那么生成一个新数组,其中新元素按顺序放在数组头部 如果 指定位置 大于等于 旧数组长度,那么生成一个新数组,其中新元素按顺序放在数组尾部 如果 指定位置 加上 新元素数量 大于 旧数组长度,那么生成一个新数组,指定位置之前是旧数组元素,指定位置及之后为新元素 否则,从已有数组中的指定位置开始,按顺序使用新元素替换旧元素,返回旧数组setOrAppend(int index, E value) 将元素值设置为数组的某个位置,当给定的index大于等于数组长度,则追加setOrPadding(int index, E value) 将元素值设置为数组的某个位置,当index小于数组的长度时,替换指定位置的值,否则追加null或0直到到达index后,设置值setOrPadding(int index, E value, E paddingElement) 将元素值设置为数组的某个位置,当index小于数组的长度时,替换指定位置的值,否则追加paddingElement直到到达index后,设置值setOrPadding(int index, E value, E paddingElement, int indexLimit) 将元素值设置为数组的某个位置,当index小于数组的长度时,替换指定位置的值,否则追加paddingElement直到到达index后,设置值toString()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface java.lang.Iterable
forEach, spliterator
-
Constructor Details
-
ArrayWrapper
构造- Parameters:
array- 数组对象(非空)
-
-
Method Details
-
of
创建ArrayWrapper,创建一个指定长度的空数组- Type Parameters:
A- 数组类型E- 数组元素类型- Parameters:
componentType- 元素类型length- 长度- Returns:
- ArrayWrapper
-
of
包装数组为ArrayWrapper- Type Parameters:
A- 数组类型E- 元素类型- Parameters:
array- 数组(非空)- Returns:
- ArrayWrapper
-
getRaw
Description copied from interface:Wrapper获取原始对象 -
length
public int length()获取数组长度- Returns:
- 数组长度
-
isPrimitive
public boolean isPrimitive()是否原始类型数组- Returns:
- 是否原始类型数组
-
getComponentType
获取数组对象的元素类型,方法调用参数与返回结果举例:- Object[] = Object.class
- String[] = String.class
- int[] = int.class
- Integer[] = Integer.class
- null = null
- String = null
- Returns:
- 元素类型
-
getArrayType
获得数组类型- Returns:
- 数组类型
-
isEmpty
public boolean isEmpty()数组是否为空- Returns:
- 是否为空
-
get
获取数组对象中指定index的值,支持负数,例如-1表示倒数第一个值 如果数组下标越界,返回null- Parameters:
index- 下标,支持负数,-1表示最后一个元素- Returns:
- 值
-
firstNonNull
返回数组中第一个非空元素- Returns:
- 第一个非空元素,如果 不存在非空元素 或 数组为空,返回
null
-
firstMatch
返回数组中第一个匹配规则的值- Parameters:
matcher- 匹配接口,实现此接口自定义匹配规则- Returns:
- 第一个匹配元素,如果 不存在匹配元素 或 数组为空,返回
null
-
indexOf
返回数组中指定元素所在位置,未找到返回Normal.__1- Parameters:
value- 被检查的元素- Returns:
- 数组中指定元素所在位置,未找到返回
Normal.__1
-
matchIndex
返回数组中第一个匹配规则的值的位置- Parameters:
matcher- 匹配接口,实现此接口自定义匹配规则- Returns:
- 第一个匹配元素的位置,
Normal.__1表示未匹配到
-
indexOf
返回数组中指定元素所在位置,未找到返回Normal.__1- Parameters:
value- 被检查的元素offset- 开始的位置- Returns:
- 数组中指定元素所在位置,未找到返回
Normal.__1
-
matchIndex
返回数组中第一个匹配规则的值的位置- Parameters:
offset- 检索开始的位置,不能为负数matcher- 匹配接口,实现此接口自定义匹配规则- Returns:
- 第一个匹配元素的位置,
Normal.__1表示未匹配到
-
lastIndexOf
返回数组中指定最后的所在位置,未找到返回Normal.__1- Parameters:
value- 被检查的元素- Returns:
- 数组中指定元素最后的所在位置,未找到返回
Normal.__1
-
matchLastIndex
返回数组中最后一个匹配规则的值的位置(从后向前查找)- Parameters:
matcher- 匹配接口,实现此接口自定义匹配规则- Returns:
- 最后一个匹配元素的位置,
Normal.__1表示未匹配到
-
matchLastIndex
返回数组中最后一个匹配规则的值的位置(从后向前查找)- Parameters:
offset- 从后向前查找时的起始位置,一般为array.length - 1matcher- 匹配接口,实现此接口自定义匹配规则- Returns:
- 最后一个匹配元素的位置,
Normal.__1表示未匹配到
-
setOrPadding
将元素值设置为数组的某个位置,当index小于数组的长度时,替换指定位置的值,否则追加null或0直到到达index后,设置值- Parameters:
index- 位置value- 新元素或新数组- Returns:
- this
-
setOrPadding
将元素值设置为数组的某个位置,当index小于数组的长度时,替换指定位置的值,否则追加paddingElement直到到达index后,设置值- Parameters:
index- 位置value- 新元素或新数组paddingElement- 填充- Returns:
- this
-
setOrPadding
将元素值设置为数组的某个位置,当index小于数组的长度时,替换指定位置的值,否则追加paddingElement直到到达index后,设置值- Parameters:
index- 位置value- 新元素或新数组paddingElement- 填充indexLimit- 索引限制- Returns:
- this
-
setOrAppend
将元素值设置为数组的某个位置,当给定的index大于等于数组长度,则追加- Parameters:
index- 位置,大于等于长度则追加,否则替换value- 新元素或新数组- Returns:
- this
-
append
将新元素添加到已有数组中 添加新元素会生成一个新的数组,不影响原数组- Parameters:
element- 新元素或新数组- Returns:
- 新数组
-
appendArray
将新数组追加到已有数组中 追加新数组会生成一个新的数组,不影响原数组- Parameters:
array- 需要追加的数组数组- Returns:
- 新数组
-
insert
将新元素插入到已有数组中的某个位置 如果插入位置为负数,从原数组从后向前计数,若大于原数组长度,则空白处用默认值填充- Parameters:
index- 插入位置,支持负数。此位置为对应此位置元素之前的空档element- 元素- Returns:
- 新数组
-
insertArray
将新元素插入到已有数组中的某个位置 如果插入位置为负数,从原数组从后向前计数,若大于原数组长度,则空白处用默认值填充- Parameters:
index- 插入位置,支持负数。此位置为对应此位置元素之前的空档arrayToInsert- 新元素数组- Returns:
- 新数组
-
replace
从数组中的指定位置开始,按顺序使用新元素替换旧元素- 如果 指定位置 为负数,那么生成一个新数组,其中新元素按顺序放在数组头部
- 如果 指定位置 大于等于 旧数组长度,那么生成一个新数组,其中新元素按顺序放在数组尾部
- 如果 指定位置 加上 新元素数量 大于 旧数组长度,那么生成一个新数组,指定位置之前是旧数组元素,指定位置及之后为新元素
- 否则,从已有数组中的指定位置开始,按顺序使用新元素替换旧元素,返回旧数组
- Parameters:
index- 位置values- 新值或新数组- Returns:
- this
-
edit
对每个数组元素执行指定操作,替换元素为修改后的元素- Parameters:
editor- 编辑器接口,为null则返回原数组- Returns:
- this
-
getSub
获取子数组- Parameters:
beginInclude- 开始位置(包括)endExclude- 结束位置(不包括)- Returns:
- 新的数组
- See Also:
-
getSub
获取子数组- Parameters:
beginInclude- 开始位置(包括)endExclude- 结束位置(不包括)step- 步进- Returns:
- 新的数组
-
isSorted
检查数组是否有序,升序或者降序若传入空数组,则返回
false;元素全部相等,返回true- Parameters:
comparator- 比较器- Returns:
- 数组是否有序
- Throws:
NullPointerException- 如果数组元素含有null值
-
isSorted
数组是否有有序- 反序,前一个小于后一个则返回错
- 正序,前一个大于后一个则返回错
- Parameters:
comparator-ComparatorisDESC- 是否反序- Returns:
- 是否有序
-
iterator
-
toString
-