1596 Stimmen

Wie kann ich zwei Arrays in Java miteinander verknüpfen?

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?

27voto

Apocalisp Punkte 34088

El Funktions-Java Bibliothek verfügt über eine Array-Wrapper-Klasse, die Arrays mit praktischen Methoden wie Verkettung ausstattet.

import static fj.data.Array.array;

...und dann

Array<String> both = array(first).append(array(second));

Um das ausgepackte Array wieder herauszuholen, rufen Sie

String[] s = both.array();

20voto

Vaseph Punkte 684

Ein anderer Weg mit Java8 unter Verwendung von Stream

  public String[] concatString(String[] a, String[] b){ 
    Stream<String> streamA = Arrays.stream(a);
    Stream<String> streamB = Arrays.stream(b);
    return Stream.concat(streamA, streamB).toArray(String[]::new); 
  }

17voto

volley Punkte 6555

Hier ist eine Anpassung der Lösung von silvertab, die mit Generika nachgerüstet wurde:

static <T> T[] concat(T[] a, T[] b) {
    final int alen = a.length;
    final int blen = b.length;
    final T[] result = (T[]) java.lang.reflect.Array.
            newInstance(a.getClass().getComponentType(), alen + blen);
    System.arraycopy(a, 0, result, 0, alen);
    System.arraycopy(b, 0, result, alen, blen);
    return result;
}

ANMERKUNG: Siehe Joachims Antwort für eine Java 6-Lösung. Sie beseitigt nicht nur die Warnung, sondern ist auch kürzer, effizienter und leichter zu lesen!

16voto

Paul Punkte 660

Sie könnten versuchen, sie in eine ArrayList und verwenden Sie die addAll Methode dann wieder in ein Array konvertieren.

List list = new ArrayList(Arrays.asList(first));
  list.addAll(Arrays.asList(second));
  String[] both = list.toArray();

13voto

Raj S. Rusia Punkte 670

Wenn Sie diese Methode verwenden, brauchen Sie keine Klasse eines Drittanbieters zu importieren.

Wenn Sie verketten wollen String

Beispielcode für die Verknüpfung zweier String-Arrays

public static String[] combineString(String[] first, String[] second){
        int length = first.length + second.length;
        String[] result = new String[length];
        System.arraycopy(first, 0, result, 0, first.length);
        System.arraycopy(second, 0, result, first.length, second.length);
        return result;
    }

Wenn Sie verketten wollen Int

Beispielcode für die Verknüpfung zweier Integer-Arrays

public static int[] combineInt(int[] a, int[] b){
        int length = a.length + b.length;
        int[] result = new int[length];
        System.arraycopy(a, 0, result, 0, a.length);
        System.arraycopy(b, 0, result, a.length, b.length);
        return result;
    }

Hier die Hauptmethode

    public static void main(String[] args) {

            String [] first = {"a", "b", "c"};
            String [] second = {"d", "e"};

            String [] joined = combineString(first, second);
            System.out.println("concatenated String array : " + Arrays.toString(joined));

            int[] array1 = {101,102,103,104};
            int[] array2 = {105,106,107,108};
            int[] concatenateInt = combineInt(array1, array2);

            System.out.println("concatenated Int array : " + Arrays.toString(concatenateInt));

        }
    }  

Wir können auch diesen Weg nutzen.

CodeJaeger.com

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.

Powered by:

X