Есть много способов добавить элемент в массив. Вы можете использовать временную List
для управления элементом и затем преобразовать его обратно в Array
, или вы можете использовать java.util.Arrays.copyOf
и комбинировать его с обобщениями для лучших результатов.
Этот пример покажет вам, как:
public static <T> T[] append2Array(T[] elements, T element)
{
T[] newArray = Arrays.copyOf(elements, elements.length + 1);
newArray[elements.length] = element;
return newArray;
}
Чтобы использовать этот метод, вам просто нужно вызвать его так:
String[] numbers = new String[]{"one", "two", "three"};
System.out.println(Arrays.toString(numbers));
numbers = append2Array(numbers, "four");
System.out.println(Arrays.toString(numbers));
Если вы хотите объединить два массива, вы можете изменить предыдущий метод следующим образом:
public static <T> T[] append2Array(T[] elements, T[] newElements)
{
T[] newArray = Arrays.copyOf(elements, elements.length + newElements.length);
System.arraycopy(newElements, 0, newArray, elements.length, newElements.length);
return newArray;
}
Теперь вы можете вызывать метод следующим образом:
String[] numbers = new String[]{"one", "two", "three"};
String[] moreNumbers = new String[]{"four", "five", "six"};
System.out.println(Arrays.toString(numbers));
numbers = append2Array(numbers, moreNumbers);
System.out.println(Arrays.toString(numbers));
Как я уже говорил, вы также можете использовать List
объекты. Тем не менее, для его безопасного использования потребуется небольшой взлом:
public static <T> T[] append2Array(Class<T[]> clazz, List<T> elements, T element)
{
elements.add(element);
return clazz.cast(elements.toArray());
}
Теперь вы можете вызывать метод следующим образом:
String[] numbers = new String[]{"one", "two", "three"};
System.out.println(Arrays.toString(numbers));
numbers = append2Array(String[].class, Arrays.asList(numbers), "four");
System.out.println(Arrays.toString(numbers));