Este artículo describe el método de implementación de Java para combinar dos matrices en una. Compártelo para su referencia, como sigue:
En Java, ¿cómo fusionar dos cadenas [] en una?
Parece ser una pregunta muy simple. Sin embargo, vale la pena pensar en cómo escribir el código de manera eficiente y concisa. Aquí hay cuatro métodos, consulte la selección.
1. Commons de apache
Esta es la forma más fácil. En Apache-Commons, hay un método ArrayUtils.addAll(Object[], Object[]) que nos permite hacerlo en una línea:
String[] both = (String[]) ArrayUtils.addAll(first, second);
Los otros necesitan llamar a los métodos proporcionados en JDK solo y envolverlos.
Por conveniencia, definiré un método de herramienta concat que puede combinar dos matrices juntas:
static String[] concat(String[] first, String[] second) {}
Para fines generales, usaré genéricos para definir siempre que sea posible para que no solo se puedan usar cadena [], sino que también se pueden usar otros tipos de matrices:
static <T> T[] concat(T[] first, T[] second) {}
Por supuesto, si su JDK no admite genéricos o no puede usarlo, puede cambiar manualmente t a la cadena.
2. System.ArrayCopy ()
String static [] concat (string [] a, string [] b) {String [] c = new String [A.Length+B.Length]; System.ArrayCopy (A, 0, C, 0, A.Length); System.ArrayCopy (B, 0, C, A.Length, B.Length); return c;}Use de la siguiente manera:
Cadena [] ambos = concat (primero, segundo);
3. Arrays.CopyOf ()
En Java6, hay una Arrays.copyOf() , que es una función genérica. Podemos usarlo para escribir un método de fusión más general:
Public static <t> t [] concat (t [] primero, t [] segundo) {t [] resultado = arrays.copyOf (first, first.length + Second.length); System.ArrayCopy (segundo, 0, resultado, first.length, segundo.length); Resultado de retorno;}Si quieres fusionar múltiples, puedes escribir esto:
Public static <t> t [] concatall (t [] primero, t [] ... REST) {int totallength = first.length; for (t [] array: REST) {totallength += array.length; } T [] resultado = arrays.copyOf (primero, totallength); int offset = first.length; for (t [] array: REST) {System.ArrayCopy (Array, 0, resultado, offset, array.length); offset += array.length; } resultado de retorno;}Use de la siguiente manera:
Cadena [] ambos = concat (primero, segundo); string [] más = concat (primero, segundo, tercero, cuarto);
4. Array.Newinstance
También puede usar Array.newInstance para generar una matriz:
static privado <t> t [] concat (t [] a, t [] b) {final int alen = a.length; Final int Blend = B.Length; if (alen == 0) {return b; } if (blen == 0) {return a; } final t [] resultado = (t []) java.lang.reflect.array. NewInstance (a.getClass (). GetComponentType (), Alen + Blend); System.ArrayCopy (a, 0, resultado, 0, Alen); System.ArrayCopy (B, 0, resultado, Alen, mezcla); Resultado de retorno;}Para obtener más información sobre el contenido relacionado con Java, consulte los temas de este sitio: "Resumen de las habilidades de operación de matriz de Java", "Resumen de los caracteres de Java y las habilidades de operación de cadena", "Resumen de las habilidades de operación matemática de Java", "," Tutorial sobre estructuras y algoritmos de datos de Java "y" Resumen de las habilidades de operación de Java Dom "
Espero que este artículo sea útil para la programación Java de todos.