Merge Multiple Arrays in Java

tässä viestissä keskustellaan siitä, miten yhdistää useita arrays in Java yhdeksi uudeksi ryhmäksi. Uuden matriisin pitäisi säilyttää alkuaineiden alkuperäinen järjestys yksittäisissä ryhmissä.

Java 8

Voimme käyttää Stream API: ta Java 8: ssa ja sen yläpuolella yhdistääksemme useita ryhmiä. Siihen on useita tapoja –

⮚ Virta.of ()

voimme saada stream koostuu kaikista elementeistä jokaisesta array käyttäen staattinen tehdas method Stream.sellaisten(). Kun meillä on Stream, voimme litistää sen käyttäen flatMap() menetelmä ja sitten muuntaa sen takaisin array käyttäen toArray () menetelmä.

1
2
3
4
5
6
7

// toiminto yhdistää useita ryhmiä Java 8: ssa ja sitä korkeammalla
Julkinen Staattinen merkkijono merge(merkkijono …ryhmät)
{
paluuvirta./ (ryhmät)
.flatMap (Stream::of) // Tai käytä taulukoita:: stream
.toArray(merkkijono:: Uusi);
}

⮚ Virta.concat ()

virrassa on concat () – menetelmä, jossa kaksi puroa otetaan syötteeksi ja niistä syntyy laiskasti yhtynyt virta. Voimme käyttää sitä yhdistää useita ryhmiä kuten alla:

1
2
3
4
5
6
7
8
9

// toiminto yhdistää useita ryhmiä Java 8: ssa ja sitä korkeammalla
Julkinen Staattinen merkkijono merge(merkkijono …ryhmät)
{
Stream<String> stream = Stream.of ();
for (String s: arrays)
stream = Stream.concat (virta, Arrays.stream (s));
paluuvirta.toArray(merkkijono:: Uusi);
}

järjestelmä.arraycopy ()

aloitamme osoittamalla uudelle array-järjestelmälle tarpeeksi muistia, jotta kaikki kaikissa matriiseissa olevat elementit voidaan ottaa huomioon käyttämällä array-järjestelmiä.kopiof (). Sitten käytämme järjestelmää.arraycopy () kopioida annetut taulukot uuteen taulukkoon alla esitetyllä tavalla:

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

// funktio yhdistää useita ryhmiä Java
Julkinen staattinen merkkijono merge(merkkijono… ryhmät)
{
int finalLength = 0;
for (String array : arrays) {
finalLength += array.pituus;
}
String dest = null;
int destPos = 0;
for (String array : arrays)
{
if (dest == null) {
dest = Arrays.copyOf (array, finalLength);
destPos = array.pituus;
} else {
systeemi.arraycopy (array, 0, dest, destPos, array.pituus);
destPos += array.pituus;
}
}
palautuspiste;
}

tässä on versio, joka toimii generics:

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

// yleinen funktio yhdistää useita samantyyppisiä ryhmiä Javassa
public static <T> t merge(T… ryhmät)
{
int finalLength = 0;
for (t array : arrays) {
finalLength += array.pituus;
}
T dest = null;
int destPos = 0;
for (T array : arrays)
{
if (dest == null) {
dest = Arrays.copyOf (array, finalLength);
destPos = array.pituus;
} else {
systeemi.arraycopy (array, 0, dest, destPos, array.pituus);
destPos += array.pituus;
}
}
palautuspiste;
}

luettelo

voimme myös käyttää luetteloa yhdistääksemme useita ryhmiä Javassa kuten alla. Tämä lähestymistapa ei ole suositeltavaa, koska se liittyy luomiseen välittäjäluettelon objektin.

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

// toiminto yhdistää useita ryhmiä Java 8: ssa ja sitä korkeammalla
Julkinen Staattinen merkkijono merge(merkkijono… ryhmät)
{
luettelo<String> result = new ArrayList<>();
Virta./ (ryhmät)
.flatMap (Stream::of)
.kartta (x -> (merkkijono)x)
.forEach (tulos::add);
palautustulos.toArray(Uusi merkkijono);
}

Java 7: lle ja sitä ennen voidaan käyttää Collections.addAll() – menetelmää:

1
2
3
4
5
6
7
8
9
10

// funktio yhdistää useita ryhmiä Java
Julkinen staattinen merkkijono merge(merkkijono… ryhmät)
{
luettelo<String> list = new ArrayList<>();
for (String array : arrays)
Collections.addAll (list, array);
paluuluettelo.toArray(Uusi merkkijono);
}

Vastaa

Sähköpostiosoitettasi ei julkaista.