Merge Multiple Arrays in Java

In diesem Beitrag werden wir diskutieren, wie mehrere Arrays in Java zu einem einzigen neuen Array zusammengeführt werden. Das neue Array sollte die ursprüngliche Reihenfolge der Elemente in einzelnen Arrays beibehalten.

Java 8

Wir können die Stream-API in Java 8 und höher verwenden, um mehrere Arrays zusammenzuführen. Es gibt verschiedene Möglichkeiten, dies zu tun –

⮚ Stream.of()

Wir können einen Stream erhalten, der aus allen Elementen aus jedem Array besteht, indem wir die statische Factory-Methode Stream verwenden.von(). Sobald wir den Stream haben, können wir ihn mit der flatMap() -Methode flatMap() und dann mit der toArray() -Methode wieder in ein Array konvertieren.

1
2
3
4
5
6
7

// Funktion zum Zusammenführen mehrerer Arrays in Java 8 und höher
public static String merge(String …arrays)
{
zurück Stream.von(Arrays)
.flatMap(Stream::of) // oder verwenden Sie Arrays::stream
.toArray(String::neu);
}

⮚ Strom.concat()

Stream verfügt über die concat() -Methode, die zwei Streams als Eingabe verwendet und daraus einen trägen verketteten Stream erstellt. Wir können es verwenden, um mehrere Arrays wie unten gezeigt zusammenzuführen:

1
2
3
4
5
6
7
8
9

// Funktion zum Zusammenführen mehrerer Arrays in Java 8 und höher
public static String merge(String …arrays)
{
Stream<Zeichenfolge> stream = Strom.von();
für (String s: arrays)
stream = Stream.concat(Strom, Arrays.stream(s));
Rückstrom.toArray(String:: neu);
}

System.arraycopy()

Wir beginnen damit, dem neuen Array genügend Speicher zuzuweisen, um alle in allen Arrays vorhandenen Elemente mithilfe von Arrays aufzunehmen.copyOf(). Dann benutzen wir System.arraycopy(), um gegebene Arrays in das neue Array zu kopieren, wie unten gezeigt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

// Funktion zum Zusammenführen mehrerer Arrays in Java
public static String merge(String… arrays)
{
int finalLength = 0;
für (String array : arrays) {
finalLength += array.länge;
}
String dest = null;
int destPos = 0;
für (String array : arrays)
{
wenn (Ziel == null) {
Ziel = Arrays.copyOf(array, finalLength);
destPos = array.länge;
} sonst {
System.arraycopy(array, 0, Ziel, destPos, array.länge);
destPos += array.länge;
}
}
ziel zurückgeben;
}

Hier ist eine Version, die mit Generika funktioniert:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

// Generische Funktion zum Zusammenführen mehrerer Arrays desselben Typs in Java
public static <T> T merge(T… arrays)
{
int finalLength = 0;
für (T array : arrays) {
finalLength += array.länge;
}
T dest = null;
int destPos = 0;
für (T array : arrays)
{
wenn (Ziel == null) {
Ziel = Arrays.copyOf(array, finalLength);
destPos = array.länge;
} sonst {
System.arraycopy(array, 0, Ziel, destPos, array.länge);
destPos += array.länge;
}
}
ziel zurückgeben;
}

List

Wir können auch eine Liste verwenden, um mehrere Arrays in Java zusammenzuführen, wie unten gezeigt. Dieser Ansatz wird nicht empfohlen, da ein zwischengeschaltetes Listenobjekt erstellt wird.

1
2
3
4
5
6
7
8
9
10
11
12

// Funktion zum Zusammenführen mehrerer Arrays in Java 8 und höher
public static String merge(String… arrays)
{
List<String> Ergebnis = neue ArrayList<>();
Strom.von(Arrays)
.flatMap(Strom::von)
.karte(x -> (Zeichenfolge)x)
.forEach(result::add);
Ergebnis zurückgeben.toArray(neuer String);
}

Für Java 7 und früher können wir die Collections.addAll() -Methode verwenden:

1
2
3
4
5
6
7
8
9
10

// Funktion zum Zusammenführen mehrerer Arrays in Java
public static String merge(String… arrays)
{
List<String> list = neue Arrayliste<>();
für (String array : arrays)
Sammlungen.addAll(Liste, Array);
Liste zurückgeben.toArray(neuer String);
}

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.