import java.util.Arrays; /** * 數組追加的工具類 */ public class ArrayUtil { /** * 追加src的所有元素到result尾部 * * @param desc * @param src * @return */ public static <T> T[] appendArray(T[] desc, T[] src) { // 特殊狀況 if (null == desc || null == src) { return (null == desc) ? src : desc; } // 原結果數組長度 int descLength = desc.length; // 原添加數組長度 int srcLength = src.length; // 結果數組擴容(必須接收一下) desc = Arrays.copyOf(desc, descLength + srcLength); // 數組追加 System.arraycopy(src, 0, desc, descLength, srcLength); // 返回追加後的完整數組 return desc; } /** * 追加src的所有元素到result尾部 * * @param desc * @param src * @return */ public static byte[] appendByteArray(byte[] desc, byte[] src) { return ArrayUtil.appendByteArray(desc, src, src.length); } /** * 追加src的前count個元素到result尾部 * * @param desc * @param src * @param count * @return */ public static byte[] appendByteArray(byte[] desc, byte[] src, int count) { // 特殊狀況1 if (null == src) { return desc; } // 特殊狀況2,此時append不爲null if (null == desc) { byte[] result = new byte[count]; // count值大於src的長度時會報數組越界的異常,此處不處理 System.arraycopy(src, 0, result, 0, count); return result; } // 原結果數組長度 int orignalLength = desc.length; // 結果數組擴容 int newLength = orignalLength + count; desc = Arrays.copyOf(desc, newLength); // 數組追加 System.arraycopy(src, 0, desc, orignalLength, count); // 返回追加後的完整數組 return desc; } /** * 測試 */ public static void main(String[] args) { String[] arr1 = { "a", "b", "c" }; String[] arr2 = { "1", "2", "3" }; String[] result = ArrayUtil.appendArray(arr1, arr2); System.out.println(Arrays.toString(result)); /*byte[] desc = { 6, 7, 8 }; byte[] src = { 1, 2, 3, 4 }; int count = 2; // byte[] result = ArrayUtil.appendByteArray(desc, src, count); byte[] result = ArrayUtil.appendByteArray(desc, src); System.out.println(Arrays.toString(result));*/ } }