В этой статье описывается метод реализации Java, чтобы объединить два массива в один. Поделитесь этим для вашей ссылки, следующим образом:
В Java, как объединить две строки [] в одну?
Кажется, это очень простой вопрос. Тем не менее, как писать код эффективно и кратко задуматься. Вот четыре метода, пожалуйста, обратитесь к выбору.
1. Апач-коммуны
Это самый простой способ. В Apache-Commons есть метод ArrayUtils.addAll(Object[], Object[]) который позволяет нам делать это в одной строке:
String[] both = (String[]) ArrayUtils.addAll(first, second);
Другие должны вызвать методы, предоставленные в JDK самостоятельно и обернуть их.
Для удобства я определяю метод инструмента, который может объединить два массива вместе:
static String[] concat(String[] first, String[] second) {}
Для общего назначения я буду использовать дженерики, чтобы определить, где это возможно, чтобы можно было использовать не только строки [], но также можно использовать другие типы массивов:
static <T> T[] concat(T[] first, T[] second) {}
Конечно, если ваш JDK не поддерживает дженерики или не может его использовать, вы можете вручную изменить t на строку.
2. System.ArrayCopy ()
static String [] 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); возврат C;}Используйте следующим образом:
String [] оба = concat (первое, второе);
3. Arrays.copyof ()
В Java6 есть методы Arrays.copyOf() , который является общей функцией. Мы можем использовать его, чтобы написать более общий метод слияния:
public static <t> t [] concat (t [] сначала, t [] второй) {t [] result = arrays.copyof (первое, первое. length + second.length); System.ArrayCopy (второе, 0, результат, first.length, second.length); вернуть результат;}Если вы хотите объединить несколько, вы можете написать это:
public static <t> t [] concatall (t [] сначала, t [] ... rest) {int totallength = first.length; for (t [] массив: rest) {totallength += array.length; } T [] result = arrays.copyof (во -первых, Totallength); int offset = first.length; for (t [] массив: rest) {System.ArrayCopy (массив, 0, результат, смещение, массив. offset += array.length; } return Result;}Используйте следующим образом:
String [] оба = concat (первое, второе); string [] more = concat (первый, второй, третий, четвертый);
4. Array.newinstance
Вы также можете использовать Array.newInstance для создания массива:
private static <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 [] result = (t []) java.lang.reflect.array. NewInstance (a.getClass (). getComponentType (), Alen + Blend); System.ArrayCopy (A, 0, Result, 0, Alen); System.ArrayCopy (B, 0, результат, Alen, Blend); вернуть результат;}Для получения дополнительной информации о контенте, связанном с Java, пожалуйста, ознакомьтесь с темами этого сайта: «Сводка навыков операции на массиве Java», «Сводка персонажей Java и навыки операции по струнной операции», «Сводка математической операции Java», «Учебное пособие по структурам данных Java и алгоритмам» и «Сводная операция Java node».
Я надеюсь, что эта статья будет полезна для всех Java Programming.