Fusionar múltiples matrices en Java

En esta publicación, discutiremos cómo fusionar múltiples matrices en Java en una única matriz nueva. La nueva matriz debe mantener el orden original de los elementos en matrices individuales.

Java 8

Podemos usar Stream API en Java 8 y versiones posteriores para fusionar múltiples matrices. Hay varias formas de hacerlo:

Stream Stream.of ()

Podemos obtener un flujo que consiste en todos los elementos de cada matriz utilizando el método de fábrica estático Stream.de(). Una vez que tenemos la Secuencia, podemos aplanarla usando el método flatMap() y luego convertirla de nuevo en una matriz usando el método toArray ().

1
2
3
4
5
6
7

// Función para fusionar múltiples matrices en Java 8 y superior
fusión de cadenas estáticas públicas (String …matrices)
{
flujo de retorno.de(matrices)
.flatMap (Stream:: of) / / o utilice Arrays::stream
.toArray (Cadena:: nueva);
}

⮚ Stream.concat ()

El flujo tiene el método concat () que toma dos flujos como entrada y crea un flujo concatenado perezosamente a partir de ellos. Podemos usarlo para fusionar múltiples matrices como se muestra a continuación:

1
2
3
4
5
6
7
8
9

// Función para fusionar múltiples matrices en Java 8 y superior
fusión de cadenas estáticas públicas (String …matrices)
{
Stream<String> stream = Stream.of ();
for (String s: arrays)
stream = Stream.concat (corriente, Arreglos.flujo(s));
flujo de retorno.toArray(String::nuevo);
}

Sistema.arraycopy ()

Comenzamos asignando suficiente memoria a la nueva matriz para acomodar todos los elementos presentes en todas las matrices mediante el uso de matrices.copyOf(). Entonces usamos el Sistema.arraycopy() para copiar los arrays dados en el nuevo array como se muestra a continuación:

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

// La función de combinación de múltiples matrices en Java
public static String de combinación(de la Cadena… matrices)
{
int finalLength = 0;
for (Matriz de cadenas : arrays) {
finalLength += array.longitud;
}
Cadena dest = null;
int destPos = 0;
para (matriz de Cadena : matrices)
{
si (dest == null) {
dest = Arrays.copyOf (array, finalLength);
destPos = array.length;
} else {
System.arraycopy (array, 0, dest, destPos, array.length);
destPos + = array.longitud;
}
}
volver dest;
}

he Aquí una versión que funciona con medicamentos 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

// Función genérica para combinar varias matrices del mismo tipo en Java
public static <T> T mezcla(T… matrices)
{
int finalLength = 0;
for (matriz T : arrays) {
finalLength += array.longitud;
}
T dest = null;
int destPos = 0;
a (T matriz : matrices)
{
si (dest == null) {
dest = Arrays.copyOf (array, finalLength);
destPos = array.length;
} else {
System.arraycopy (array, 0, dest, destPos, array.length);
destPos + = array.longitud;
}
}
volver dest;
}

List

También podemos usar una Lista para fusionar múltiples matrices en Java como se muestra a continuación. Este enfoque no se recomienda ya que implica la creación de un objeto de Lista intermedio.

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

// Función para fusionar múltiples matrices en Java 8 y superior
fusión de cadenas estáticas públicas (String… matrices)
{
List< String> result = nueva ArrayList<>();
Corriente.de(matrices)
.Mapa plano (Flujo::of)
.mapa (x – > (Cadena)x)
.forEach (result:: add);
devuelve el resultado.toArray(new String);
}

Para Java 7 y antes, podemos usar Collections.addAll() método:

1
2
3
4
5
6
7
8
9
10

// la Función de combinación de múltiples matrices en Java
public static String de combinación(de la Cadena… matrices)
{
List< String> list = nueva ArrayList<>();
para (Matriz de cadenas : matrices)
Colecciones.addAll (lista, matriz);
devuelve la lista.toArray(new String);
}

Deja una respuesta

Tu dirección de correo electrónico no será publicada.