meerdere Arrays samenvoegen in Java

in dit artikel zullen we bespreken hoe meerdere arrays in Java kunnen worden samengevoegd tot een enkele nieuwe array. De nieuwe array moet de oorspronkelijke volgorde van elementen in individuele arrays behouden.

Java 8

we kunnen Stream API gebruiken in Java 8 en hoger om meerdere arrays samen te voegen. Er zijn verschillende manieren om dat te doen –

Stream Stream.of ()

we kunnen een stream verkrijgen die bestaat uit alle elementen uit elke array met behulp van statische factory method Stream.van(). Zodra we de Stream hebben, kunnen we deze platmaken met de methode flatMap() en vervolgens converteren naar een array met de methode toArray ().

1
2
3
4
5
6
7

// functie om meerdere arrays samen te voegen in Java 8 en hoger
public static String merge (String …arrays)
{
terugstroom.van (arrays)
.flatMap (Stream:: of) / / of gebruik Arrays:: stream
.toArray (tekenreeks::nieuw);
}

⮚ Stream.concat ()

Stream heeft de concat () methode die twee streams als input neemt en er een luie aaneengeschakelde stream uit maakt. We kunnen het gebruiken om meerdere arrays samen te voegen zoals hieronder getoond:

1
2
3
4
5
6
7
8
9

// functie om meerdere arrays samen te voegen in Java 8 en hoger
public static String merge (String …arrays)
{
Stream<String> stream = Stream.of ();
voor (String s: arrays)
stream = Stream.concat (stream, Arrays.stream (s));
return stream.toArray (String::nieuw);
}

systeem.arraycopy ()

we beginnen met het toewijzen van voldoende geheugen aan de nieuwe array om alle elementen die aanwezig zijn in alle arrays op te nemen met behulp van Arrays.copyOf (). Dan gebruiken we het systeem.arraycopy () om gegeven arrays te kopiëren naar de nieuwe array zoals hieronder getoond:

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

// Functie voor het samenvoegen van meerdere arrays in Java
public static String samenvoegen(String… arrays)
{
int finalLength = 0;
voor (String array : arrays) {
finalLength += array.lengte;
}
String dest = null;
int destPos = 0;
voor (String array : arrays)
{
if (dest == null) {
dest = Arrays.copyOf (array, finalLength);
destPos = array.lengte;
} else {
systeem.arraycopy (array, 0, dest, destPos, array.lengte);
destPos += array.lengte;
}
}
return dest;
}

hier is een versie die werkt met generieke geneesmiddelen:

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

// Generieke functie voor het samenvoegen van meerdere arrays van hetzelfde type in Java
public static <T> T merge(T… arrays)
{
int finalLength = 0;
voor (t array : arrays) {
finalLength += array.lengte;
}
T dest = null;
int destPos = 0;
voor (t array : arrays)
{
if (dest == null) {
dest = Arrays.copyOf (array, finalLength);
destPos = array.lengte;
} else {
systeem.arraycopy (array, 0, dest, destPos, array.lengte);
destPos += array.lengte;
}
}
return dest;
}

lijst

we kunnen ook een lijst gebruiken om meerdere arrays in Java samen te voegen, zoals hieronder wordt getoond. Deze aanpak wordt niet aanbevolen, omdat het gaat om de creatie van een intermediaire lijst object.

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

// Functie voor het samenvoegen van meerdere arrays in Java 8 en hoger
public static String samenvoegen(String… arrays)
{
List<String> result = new ArrayList<>();
Stream.van (arrays)
.flatMap (Stream::of)
.map (x -> (String)x)
.forEach (result:: add);
return result.toArray (nieuwe tekenreeks));
}

voor Java 7 en daarvoor kunnen we Collections.addAll() methode gebruiken:

1
2
3
4
5
6
7
8
9
10

// functie om meerdere arrays samen te voegen in Java
public static String merge (String… arrays)
{
List<String> list = new ArrayList<>();
voor (String array : arrays)
Verzamelingen.addAll (list, array);
retourlijst.toArray (nieuwe tekenreeks));
}

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.