public static <T> T[] concatenate(T[] a, T[] b) { int aLen = a.length; int bLen = b.length; T[] c = Arrays.copyOf(a, aLen + bLen); System.arraycopy(b, 0, c, aLen, bLen); return c; } 和 public static <T> T[] concatenate(T[] a, T[] b) { int aLen = a.length; int bLen = b.length; @SuppressWarnings("unchecked") T[] c = (T[]) Array.newInstance(a.getClass().getComponentType(), aLen + bLen); System.arraycopy(a, 0, c, 0, aLen); System.arraycopy(b, 0, c, aLen, bLen); return c; } 哪个性能更好
时间: 2024-04-27 09:22:58 浏览: 133
System.arraycopy和Arrays.copyOf
4星 · 用户满意度95%
两个方法的时间复杂度都是 O(m+n),其中 m 和 n 分别是数组 a 和 b 的长度,因为它们都只进行了一次数组拷贝和一次数组复制。
但是第二个方法使用了 `Array.newInstance` 方法来创建新数组,它需要反射机制来创建数组,可能会有一些额外的开销,因此在性能上可能略逊于第一个方法。
不过这种差别在一般情况下可能不太明显,只有在需要高性能的场合下才需要考虑这些细节。一般来说,我们应该优先选择代码更加简洁易懂的方法。
阅读全文