Merge várias matrizes em Java

neste post, vamos discutir como mesclar várias matrizes em Java em um único novo array. A nova matriz deve manter a ordem original dos elementos em matrizes individuais.

Java 8

podemos usar a API de fluxo em Java 8 e acima para juntar várias matrizes. Existem várias maneiras de fazer isso –

Stream Stream.of ()

we can obtain a stream consisting of all elements from every array using static factory method Stream.de(). Uma vez que temos o fluxo, podemos achatá-lo usando o método flatMap() e, em seguida, convertê-lo de volta para um array usando o método toArray ().

1
2
3
4
5
6
7

// Função de mesclar vários arrays em Java 8 e acima de
public static String de mesclagem(String …arrays)
{
fluxo de retorno.of (arrays)
.flatMap (Stream::of) // or use Arrays::stream
.toArray(texto:: novo);
}

⮚ Fluxo.concat ()

Stream has concat () method that takes two streams as input and creates a lazily concatened stream out of them. Podemos usá-lo para mesclar várias matrizes, como mostrado abaixo:

1
2
3
4
5
6
7
8
9

// Função de mesclar vários arrays em Java 8 e acima de
public static String de mesclagem(String …arrays)
{
Stream < String> stream = Stream.of ();
for (String s: arrays)
stream = Stream.concat (stream, Arrays.fluxo(s));
fluxo de retorno.toArray(texto:: novo);
}

sistema.arraycopy ()

começamos por distribuir memória suficiente para a nova matriz para acomodar todos os elementos presentes em todas as matrizes usando matrizes.copyOf(). Então usamos o sistema.arraycopy () para copiar as matrizes indicadas para a nova lista, como mostrado abaixo:

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

// Função de mesclar vários arrays em Java
public static String de mesclagem(String… arrays)
{
int finalLength = 0;
for (string array : arrays) {
finalLength + = array.comprimento;
}
String dest = null;
int destPos = 0;
for (matriz de Seqüência de caracteres : matrizes)
{
if (v == null) {
dest = Matrizes.copyOf (array, finalLength);
destPos = array.comprimento;
} outros {
sistema.arraycopy (array, 0, dest, destPos, array.comprimento);
destPos + = array.comprimento;
}
}
devolver o dest;
}

Aqui está uma versão que funciona com os genéricos:

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

// Função genérica para mesclar várias matrizes do mesmo tipo em Java
public static <T> T de mesclagem(T… arrays)
{
int finalLength = 0;
for (t array : arrays) {
finalLength + = array.comprimento;
}
T dest = null;
int destPos = 0;
para (T matriz : array)
{
if (v == null) {
dest = Matrizes.copyOf (array, finalLength);
destPos = array.comprimento;
} outros {
sistema.arraycopy (array, 0, dest, destPos, array.comprimento);
destPos + = array.comprimento;
}
}
devolver o dest;
}

listar

também podemos usar uma lista para juntar várias matrizes em Java como mostrado abaixo. Esta abordagem não é recomendada, uma vez que envolve a criação de um objeto de lista intermediária.

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

// Função de mesclar vários arrays em Java 8 e acima de
public static String de mesclagem(String… arrays)
{
list<String> result = new ArrayList<>();
Stream.of (arrays)
.flatMap (Stream::of)
.mapa (x- > (texto)x)
.forEach (result::add);
return result.toArray(novo texto);
}

para Java 7 e antes, podemos usar o método Collections.addAll() :

1
2
3
4
5
6
7
8
9
10

// Função de mesclar vários arrays em Java
public static String de mesclagem(String… arrays)
{
List<String> list = Nova Lista<>();
For (String array : arrays)
Collections.addAll (list, array);
return list.toArray(novo texto);
}

Deixe uma resposta

O seu endereço de email não será publicado.