From 78f886075eb45b1fdeca88cc0ace0f9aefcc4ff5 Mon Sep 17 00:00:00 2001 From: jiazhengquan <2466896229@qq.com> Date: Fri, 11 Mar 2022 17:51:09 +0800 Subject: [PATCH] =?UTF-8?q?issue=20#I4XG4L=20=E5=88=9D=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/hutool/core/util/ArrayUtil.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/hutool-core/src/main/java/cn/hutool/core/util/ArrayUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/ArrayUtil.java index 8c948e8a9..01e4ea721 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/ArrayUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/ArrayUtil.java @@ -368,6 +368,43 @@ public class ArrayUtil extends PrimitiveArrayUtil { } } + /** + * 将元素值设置为数组的某个位置,根据元素顺序添加
+ * 当给定的index大于数组长度,则追加 + * + * @param 数组元素类型 + * @param buffer 已有数组 + * @param index 位置,大于长度追加,否则替换 + * @param values 新值 + * @return 新数组或原有数组 + */ + public static T[] replace(T[] buffer, int index, T... values) { + return index == 0 ? values : replaceBy(buffer, index, values); + } + + /** + * 将元素值设置为数组的某个位置,根据元素顺序添加
+ * 当给定的index大于数组长度,则追加 + * + * @param 数组元素类型 + * @param buffer 已有数组 + * @param index 位置,大于长度追加,否则替换 + * @param values 新值 + * @return 新数组或原有数组 + */ + public static T[] replaceBy(T[] buffer, int index, T... values) { + if (index < buffer.length && buffer.length - index - 1 >= values.length) { + for (int i = index; i < values.length; i++) { + Array.set(buffer, index, values[i]); + } + return buffer; + } else { + final T[] result = (T[]) Array.newInstance(buffer.getClass().getComponentType(), buffer.length - index - 1); + System.arraycopy(buffer, 0, result, 0, buffer.length - index - 1); + return append(result, values); + } + } + /** * 将新元素插入到到已有数组中的某个位置
* 添加新元素会生成一个新的数组,不影响原数组