Este artigo descreve o método de implementação do Java de combinar duas matrizes em uma. Compartilhe -o para sua referência, como segue:
Em Java, como mesclar duas cordas [] em uma?
Parece ser uma pergunta muito simples. No entanto, como escrever o código com eficiência e concisa ainda vale a pena pensar. Aqui estão quatro métodos, consulte a seleção.
1. Apache-Commons
Esta é a maneira mais fácil. Nos Apache-Commons, existe um método ArrayUtils.addAll(Object[], Object[]) que nos permite fazê-lo em uma linha:
String[] both = (String[]) ArrayUtils.addAll(first, second);
Os outros precisam chamar os métodos fornecidos no JDK sozinho e envolvê -los.
Por conveniência, definirei um método de ferramenta Concat que pode combinar duas matrizes:
static String[] concat(String[] first, String[] second) {}
Para fins gerais, usarei genéricos para definir sempre que possível, para que não apenas string [] possa ser usado, mas também outros tipos de matrizes:
static <T> T[] concat(T[] first, T[] second) {}
Obviamente, se o seu JDK não suportar genéricos ou não puder usá -lo, você poderá alterar manualmente t para string.
2. System.arraycopy ()
String estática [] 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); retornar C;}Use o seguinte:
String [] ambos = concat (primeiro, segundo);
3. Arrays.copyof ()
No Java6, há um método Arrays.copyOf() , que é uma função genérica. Podemos usá -lo para escrever um método de mesclagem mais geral:
public static <t> t [] concat (t [] primeiro, t [] segundo) {t [] resultado = Arrays.copyof (primeiro, primeiro.length + Second.Length); System.arraycopy (segundo, 0, resultado, primeiro.length, Second.Length); resultado de retorno;}Se você quiser mesclar múltiplas, pode escrever isso:
public static <t> t [] concatall (t [] primeiro, t [] ... descanso) {int totallength = primeiro.length; para (t [] array: descanse) {toTallgen += array.length; } T [] resultado = Arrays.copyof (primeiro, totalLength); int offset = primeiro.length; para (t [] array: descanse) {System.arraycopy (Array, 0, resultado, deslocamento, array.length); deslocamento += array.length; } resultado de retorno;}Use o seguinte:
String [] ambos = concat (primeiro, segundo); string [] mais = concat (primeiro, segundo, terceiro, quarto);
4. Array.NewInstance
Você também pode usar Array.newInstance para gerar uma matriz:
estático 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, Blend); resultado de retorno;}Para obter mais informações sobre o conteúdo relacionado a Java, consulte os tópicos deste site: "Resumo das habilidades de operação da matriz Java", "Resumo dos caracteres Java e habilidades de operação de cordas", "Resumo dos Java Mathematical Operation Skills", "Tutorial sobre estruturas de dados Java e algoritmos" e "Resumo da Java Operação Dom Sacria
Espero que este artigo seja útil para a programação Java de todos.