diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5ee45055a..9c8267313 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -31,6 +31,7 @@
* 【http 】 HttpUtil增加downloadBytes方法(pr#895@Github)
* 【core 】 isMactchRegex失效标记,增加isMatchRegex(issue#I1IPJG@Gitee)
* 【core 】 优化Validator.isChinese
+* 【core 】 ArrayUtil.addAll增加原始类型支持(issue#898@Github)
### Bug修复
* 【core 】 修复SimpleCache死锁问题(issue#I1HOKB@Gitee)
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 57422dd04..73372894f 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
@@ -654,6 +654,230 @@ public class ArrayUtil {
return result;
}
+ /**
+ * 将多个数组合并在一起
+ * 忽略null的数组
+ *
+ * @param arrays 数组集合
+ * @return 合并后的数组
+ * @since 4.6.9
+ */
+ public static int[] addAll(int[]... arrays) {
+ if (arrays.length == 1) {
+ return arrays[0];
+ }
+
+ // 计算总长度
+ int length = 0;
+ for (int[] array : arrays) {
+ if (null != array) {
+ length += array.length;
+ }
+ }
+
+ final int[] result = new int[length];
+ length = 0;
+ for (int[] array : arrays) {
+ if (null != array) {
+ System.arraycopy(array, 0, result, length, array.length);
+ length += array.length;
+ }
+ }
+ return result;
+ }
+
+ /**
+ * 将多个数组合并在一起
+ * 忽略null的数组
+ *
+ * @param arrays 数组集合
+ * @return 合并后的数组
+ * @since 4.6.9
+ */
+ public static long[] addAll(long[]... arrays) {
+ if (arrays.length == 1) {
+ return arrays[0];
+ }
+
+ // 计算总长度
+ int length = 0;
+ for (long[] array : arrays) {
+ if (null != array) {
+ length += array.length;
+ }
+ }
+
+ final long[] result = new long[length];
+ length = 0;
+ for (long[] array : arrays) {
+ if (null != array) {
+ System.arraycopy(array, 0, result, length, array.length);
+ length += array.length;
+ }
+ }
+ return result;
+ }
+
+ /**
+ * 将多个数组合并在一起
+ * 忽略null的数组
+ *
+ * @param arrays 数组集合
+ * @return 合并后的数组
+ * @since 4.6.9
+ */
+ public static double[] addAll(double[]... arrays) {
+ if (arrays.length == 1) {
+ return arrays[0];
+ }
+
+ // 计算总长度
+ int length = 0;
+ for (double[] array : arrays) {
+ if (null != array) {
+ length += array.length;
+ }
+ }
+
+ final double[] result = new double[length];
+ length = 0;
+ for (double[] array : arrays) {
+ if (null != array) {
+ System.arraycopy(array, 0, result, length, array.length);
+ length += array.length;
+ }
+ }
+ return result;
+ }
+
+ /**
+ * 将多个数组合并在一起
+ * 忽略null的数组
+ *
+ * @param arrays 数组集合
+ * @return 合并后的数组
+ * @since 4.6.9
+ */
+ public static float[] addAll(float[]... arrays) {
+ if (arrays.length == 1) {
+ return arrays[0];
+ }
+
+ // 计算总长度
+ int length = 0;
+ for (float[] array : arrays) {
+ if (null != array) {
+ length += array.length;
+ }
+ }
+
+ final float[] result = new float[length];
+ length = 0;
+ for (float[] array : arrays) {
+ if (null != array) {
+ System.arraycopy(array, 0, result, length, array.length);
+ length += array.length;
+ }
+ }
+ return result;
+ }
+
+ /**
+ * 将多个数组合并在一起
+ * 忽略null的数组
+ *
+ * @param arrays 数组集合
+ * @return 合并后的数组
+ * @since 4.6.9
+ */
+ public static char[] addAll(char[]... arrays) {
+ if (arrays.length == 1) {
+ return arrays[0];
+ }
+
+ // 计算总长度
+ int length = 0;
+ for (char[] array : arrays) {
+ if (null != array) {
+ length += array.length;
+ }
+ }
+
+ final char[] result = new char[length];
+ length = 0;
+ for (char[] array : arrays) {
+ if (null != array) {
+ System.arraycopy(array, 0, result, length, array.length);
+ length += array.length;
+ }
+ }
+ return result;
+ }
+
+ /**
+ * 将多个数组合并在一起
+ * 忽略null的数组
+ *
+ * @param arrays 数组集合
+ * @return 合并后的数组
+ * @since 4.6.9
+ */
+ public static boolean[] addAll(boolean[]... arrays) {
+ if (arrays.length == 1) {
+ return arrays[0];
+ }
+
+ // 计算总长度
+ int length = 0;
+ for (boolean[] array : arrays) {
+ if (null != array) {
+ length += array.length;
+ }
+ }
+
+ final boolean[] result = new boolean[length];
+ length = 0;
+ for (boolean[] array : arrays) {
+ if (null != array) {
+ System.arraycopy(array, 0, result, length, array.length);
+ length += array.length;
+ }
+ }
+ return result;
+ }
+
+ /**
+ * 将多个数组合并在一起
+ * 忽略null的数组
+ *
+ * @param arrays 数组集合
+ * @return 合并后的数组
+ * @since 4.6.9
+ */
+ public static short[] addAll(short[]... arrays) {
+ if (arrays.length == 1) {
+ return arrays[0];
+ }
+
+ // 计算总长度
+ int length = 0;
+ for (short[] array : arrays) {
+ if (null != array) {
+ length += array.length;
+ }
+ }
+
+ final short[] result = new short[length];
+ length = 0;
+ for (short[] array : arrays) {
+ if (null != array) {
+ System.arraycopy(array, 0, result, length, array.length);
+ length += array.length;
+ }
+ }
+ return result;
+ }
+
/**
* 包装 {@link System#arraycopy(Object, int, Object, int, int)}
* 数组复制
diff --git a/hutool-core/src/test/java/cn/hutool/core/util/ArrayUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/ArrayUtilTest.java
index 0f41afde3..e9df98f16 100644
--- a/hutool-core/src/test/java/cn/hutool/core/util/ArrayUtilTest.java
+++ b/hutool-core/src/test/java/cn/hutool/core/util/ArrayUtilTest.java
@@ -283,4 +283,10 @@ public class ArrayUtilTest {
Assert.assertEquals("C", array[2]);
Assert.assertEquals("D", array[3]);
}
+
+ @Test
+ public void addAllTest(){
+ final int[] ints = ArrayUtil.addAll(new int[]{1, 2, 3}, new int[]{4, 5, 6});
+ Assert.assertArrayEquals(new int[]{1,2,3,4,5,6}, ints);
+ }
}