Java tutorial
//package com.java2s; /* * Copyright (C) 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import java.util.Arrays; public class Main { /** * Appends an element to the end of the array, growing the array if there is no more room. * @param array The array to which to append the element. This must NOT be null. * @param currentSize The number of elements in the array. Must be less than or equal to * array.length. * @param element The element to append. * @return the array to which the element was appended. This may be different than the given * array. */ public static <T> T[] append(T[] array, int currentSize, T element) { assert currentSize <= array.length; if (currentSize + 1 > array.length) { @SuppressWarnings("unchecked") int newLengh = growSize(currentSize); T[] newArray = Arrays.copyOf(array, newLengh); ///////////////////////////// // T[] newArray = ArrayUtils.newUnpaddedArray( // (Class<T>) array.getClass().getComponentType(), growSize(currentSize)); // // System.arraycopy(array, 0, newArray, 0, currentSize); ///////////////////////////// array = newArray; } array[currentSize] = element; return array; } /** * Primitive int version of {@link #append(Object[], int, Object)}. */ public static int[] append(int[] array, int currentSize, int element) { assert currentSize <= array.length; if (currentSize + 1 > array.length) { int[] newArray = new int[growSize(currentSize)]; System.arraycopy(array, 0, newArray, 0, currentSize); array = newArray; } array[currentSize] = element; return array; } /** * Primitive long version of {@link #append(Object[], int, Object)}. */ public static long[] append(long[] array, int currentSize, long element) { assert currentSize <= array.length; if (currentSize + 1 > array.length) { long[] newArray = new long[growSize(currentSize)]; System.arraycopy(array, 0, newArray, 0, currentSize); array = newArray; } array[currentSize] = element; return array; } /** * Primitive boolean version of {@link #append(Object[], int, Object)}. */ public static boolean[] append(boolean[] array, int currentSize, boolean element) { assert currentSize <= array.length; if (currentSize + 1 > array.length) { boolean[] newArray = new boolean[growSize(currentSize)]; System.arraycopy(array, 0, newArray, 0, currentSize); array = newArray; } array[currentSize] = element; return array; } /** * Given the current size of an array, returns an ideal size to which the array should grow. * This is typically double the given size, but should not be relied upon to do so in the * future. */ public static int growSize(int currentSize) { return currentSize <= 4 ? 8 : currentSize * 2; } }