Ich muss zwei Dateien verketten String
Arrays in Java.
void f(String[] first, String[] second) {
String[] both = ???
}
Wie lässt sich dies am einfachsten bewerkstelligen?
Ich muss zwei Dateien verketten String
Arrays in Java.
void f(String[] first, String[] second) {
String[] both = ???
}
Wie lässt sich dies am einfachsten bewerkstelligen?
Bitte verzeihen Sie mir, dass ich dieser bereits langen Liste noch eine weitere Version hinzufüge. Ich habe mir alle Antworten angesehen und beschlossen, dass ich wirklich eine Version mit nur einem Parameter in der Signatur haben möchte. Ich fügte auch eine Argumentprüfung hinzu, um bei unerwarteten Eingaben von einem frühen Scheitern mit vernünftigen Informationen zu profitieren.
@SuppressWarnings("unchecked")
public static <T> T[] concat(T[]... inputArrays) {
if(inputArrays.length < 2) {
throw new IllegalArgumentException("inputArrays must contain at least 2 arrays");
}
for(int i = 0; i < inputArrays.length; i++) {
if(inputArrays[i] == null) {
throw new IllegalArgumentException("inputArrays[" + i + "] is null");
}
}
int totalLength = 0;
for(T[] array : inputArrays) {
totalLength += array.length;
}
T[] result = (T[]) Array.newInstance(inputArrays[0].getClass().getComponentType(), totalLength);
int offset = 0;
for(T[] array : inputArrays) {
System.arraycopy(array, 0, result, offset, array.length);
offset += array.length;
}
return result;
}
Eine generische statische Version, die das leistungsstarke System.arraycopy verwendet, ohne dass eine @SuppressWarnings-Annotation erforderlich ist:
public static <T> T[] arrayConcat(T[] a, T[] b) {
T[] both = Arrays.copyOf(a, a.length + b.length);
System.arraycopy(b, 0, both, a.length, b.length);
return both;
}
Das funktioniert, aber Sie müssen Ihre eigene Fehlerprüfung einfügen.
public class StringConcatenate {
public static void main(String[] args){
// Create two arrays to concatenate and one array to hold both
String[] arr1 = new String[]{"s","t","r","i","n","g"};
String[] arr2 = new String[]{"s","t","r","i","n","g"};
String[] arrBoth = new String[arr1.length+arr2.length];
// Copy elements from first array into first part of new array
for(int i = 0; i < arr1.length; i++){
arrBoth[i] = arr1[i];
}
// Copy elements from second array into last part of new array
for(int j = arr1.length;j < arrBoth.length;j++){
arrBoth[j] = arr2[j-arr1.length];
}
// Print result
for(int k = 0; k < arrBoth.length; k++){
System.out.print(arrBoth[k]);
}
// Additional line to make your terminal look better at completion!
System.out.println();
}
}
Es ist wahrscheinlich nicht das effizienteste, aber es verlässt sich auf nichts anderes als Javas eigene API.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.