System.arraycopy
を使用すると、新しい配列を作成してそのサイズを大きくすることができます。あなたはプリミティブlong
タイプを使用しているので、あなたがこれらのタイプをサポートする場合
、あなたは(int
、float
、double
、など)各プリミティブのためにこのロジックをコピー&ペーストする必要があります。
public static void main(String[] args) {
long[] digs = { 0, 1, 2, 3, 5 }
long[] digs2 = push(digs, 6);
long[] digs3 = pushAll(digs2, new long[] { 7, 8, 9 });
System.out.println(Arrays.toString(digs)); // [0, 1, 2, 3, 5]
System.out.println(Arrays.toString(digs2)); // [0, 1, 2, 3, 5, 6]
System.out.println(Arrays.toString(digs3)); // [0, 1, 2, 3, 5, 6, 7, 8, 9]
// Generic Example
Long[] genArr = push(new Long[] { 0L, 1L }, new Long(3L), Long.class);
// or Long[] genArr = push(new Long[] { 0L, 1L }, new Long(3L));
System.out.println(Arrays.toString(genArr)); // [0, 1, 3]
}
プッシュ
public static long[] push(long[] a, long b) {
long[] result = new long[a.length + 1];
System.arraycopy(a, 0, result, 0, a.length);
result[a.length] = b;
return result;
}
プッシュすべて
public static long[] pushAll(long[] a, long[] b) {
long[] result = new long[a.length + b.length];
System.arraycopy(a, 0, result, 0, a.length);
System.arraycopy(b, 0, result, a.length, b.length);
return result;
}
ジェネリックプッシュ
public static <E> E[] push(E[] a, E b, Class<E> classType) {
@SuppressWarnings("unchecked")
E[] result = (E[]) Array.newInstance(classType, a.length + 1);
System.arraycopy(a, 0, result, 0, a.length);
result[a.length] = b;
return result;
}
オプション
// Convenience, so that you don't have to pass in the class.
public static Long[] push(Long[] a, Long b) {
return push(a, b, Long.class);
}
あなたがから 'push'を呼び出す必要があり機能 –
を呼び出していないする必要がありながら、主な方法。 – Linuslabo
Java配列は固定長であることにも注意してください。あなたは何かを最後まで押すことはできません。ここに表示されるコードは、必要な内容の新しい長い配列を作成します。本質的に間違っていることは何もありませんが、それとあなたが尋ねたものとの違いを理解することが重要です。 –