Es gibt viele Möglichkeiten, ein Element zu einem Array hinzuzufügen. Sie können ein temp List
um das Element zu verwalten, und konvertieren es dann zurück in Array
oder Sie können die java.util.Arrays.copyOf
und kombinieren sie mit Generika, um bessere Ergebnisse zu erzielen.
Dieses Beispiel zeigt Ihnen, wie das geht:
public static <T> T[] append2Array(T[] elements, T element)
{
T[] newArray = Arrays.copyOf(elements, elements.length + 1);
newArray[elements.length] = element;
return newArray;
}
Um diese Methode zu verwenden, müssen Sie sie nur wie folgt aufrufen:
String[] numbers = new String[]{"one", "two", "three"};
System.out.println(Arrays.toString(numbers));
numbers = append2Array(numbers, "four");
System.out.println(Arrays.toString(numbers));
Wenn Sie zwei Arrays zusammenführen möchten, können Sie die vorherige Methode wie folgt ändern:
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;
}
Jetzt können Sie die Methode wie folgt aufrufen:
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));
Wie ich bereits erwähnt habe, können Sie auch List
Objekte. Allerdings ist ein kleiner Hack erforderlich, um sie so sicher zu machen:
public static <T> T[] append2Array(Class<T[]> clazz, List<T> elements, T element)
{
elements.add(element);
return clazz.cast(elements.toArray());
}
Jetzt können Sie die Methode wie folgt aufrufen:
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));