Slå Sammen Flere Arrays I Java

i dette innlegget vil vi diskutere hvordan du slår sammen flere arrays I Java i en enkelt ny array. Den nye matrisen skal opprettholde den opprinnelige rekkefølgen av elementer i individuelle matriser.

Java 8

Vi kan bruke Stream API I Java 8 og over for å slå sammen flere arrays. Det finnes ulike måter å gjøre det på –

⮚ Stream.av ()

kan Vi få en strøm som består av alle elementer fra hver matrise ved hjelp av statisk fabrikkmetodestrøm.av(). Når Vi har Strømmen, kan vi flate den ved hjelp av flatMap () – metoden og deretter konvertere den tilbake til en matrise ved hjelp av toArray () – metoden.

1
2
3
4
5
6
7

// Funksjon for å slå sammen flere arrays I Java 8 og over
offentlig statisk String merge (String …arrays)
{
retur Stream.av (arrays)
.flatMap (Stream::of) // eller bruk Arrays::stream
.toArray (Streng:: ny);
}

⮚ Stream.concat()

Stream har concat () metode som tar to bekker som inngang og skaper en lazily sammenkoblet strøm ut av dem. Vi kan bruke den til å slå sammen flere arrays som vist nedenfor:

1
2
3
4
5
6
7
8
9

// Funksjon for å slå sammen flere arrays I Java 8 og over
offentlig statisk String merge (String …arrays)
{
Strøm< Streng> strøm = Strøm.av ();
for (Streng s: arrays)
stream = Stream.concat (strøm, Arrays.strøm(er));
returstrøm.toArray (String:: ny);
}

System.arraycopy ()

vi starter med å tildele nok minne til det nye arrayet for å imøtekomme alle elementene som er tilstede i alle arrays ved å bruke Arrays.copyOf (). Da bruker Vi Systemet.arraycopy () for å kopiere gitte arrays til den nye arrayen som vist nedenfor:

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

// Funksjon for å slå sammen flere arrays I Java
offentlig statisk String merge (String… arrays)
{
int finalLength = 0;
for (Streng array : matriser) {
sluttlengde + = matrise.lengde;
}
String dest = null;
int destPos = 0;
for (Streng array: arrays)
{
hvis (dest == null) {
dest = Matriser.copyOf (array, sluttlengde);
destPos = array.lengde;
} else {
System.arraycopy (array, 0, dest, destPos, array.lengde);
destPos + = array.lengde;
}
}
return dest;
}

her er en versjon som fungerer med generikk:

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

// Generisk funksjon for å slå sammen flere arrays av samme type I Java
offentlig statisk < T > t merge(T… arrays)
{
int sluttlengde = 0;
for (T array : matriser) {
sluttlengde + = matrise.lengde;
}
T dest = null;
int destPos = 0;
for (T array: arrays)
{
hvis (dest == null) {
dest = Matriser.copyOf (array, sluttlengde);
destPos = array.lengde;
} else {
System.arraycopy (array, 0, dest, destPos, array.lengde);
destPos + = array.lengde;
}
}
return dest;
}

List

Vi kan også bruke En Liste for å slå sammen flere arrays I Java som vist nedenfor. Denne tilnærmingen er ikke anbefalt siden det innebærer etablering av et mellomledd liste objekt.

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

// Funksjon for å slå sammen flere arrays I Java 8 og over
offentlig statisk String merge (String… arrays)
{
Liste< Streng > resultat = ny ArrayList<>();
Stream.av (arrays)
.flatMap (Strøm::av)
.kart (x – > (Streng) x)
.forEach (resultat:: legg til);
returresultat.toArray (ny Streng);
}

For Java 7 og før kan vi bruke Collections.addAll() – metoden:

1
2
3
4
5
6
7
8
9
10

// Funksjon for å slå sammen flere arrays I Java
offentlig statisk String merge (String… arrays)
{
Liste < Streng > liste = ny ArrayList<>();
For (Streng array : arrays)
Samlinger.addAll (liste, array);
returliste.toArray (ny Streng);
}

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.