Artikel ini menjelaskan metode implementasi Java untuk menggabungkan dua array menjadi satu. Bagikan untuk referensi Anda, sebagai berikut:
Di Java, bagaimana menggabungkan dua string [] menjadi satu?
Tampaknya menjadi pertanyaan yang sangat sederhana. Namun, bagaimana menulis kode secara efisien dan ringkas masih layak dipikirkan. Berikut adalah empat metode, silakan merujuk pada seleksi.
1. Apache-Commons
Ini adalah cara termudah. Di Apache-Commons, ada metode ArrayUtils.addAll(Object[], Object[]) yang memungkinkan kita melakukannya dalam satu baris:
String[] both = (String[]) ArrayUtils.addAll(first, second);
Yang lain perlu memanggil metode yang disediakan dalam JDK sendiri dan membungkusnya.
Untuk kenyamanan, saya akan mendefinisikan metode Metode Concat yang dapat menggabungkan dua array bersama -sama:
static String[] concat(String[] first, String[] second) {}
Untuk tujuan umum, saya akan menggunakan obat generik untuk menentukan jika memungkinkan sehingga tidak hanya string [] dapat digunakan, tetapi jenis array lain juga dapat digunakan:
static <T> T[] concat(T[] first, T[] second) {}
Tentu saja, jika JDK Anda tidak mendukung obat generik atau tidak dapat menggunakannya, Anda dapat mengubah T secara manual menjadi string.
2. System.ArrayCopy ()
string statis [] concat (string [] a, string [] b) {string [] c = string baru [a.length+b.length]; System.ArrayCopy (A, 0, C, 0, A.Length); System.ArrayCopy (B, 0, C, A.Length, B.Length); mengembalikan c;}Gunakan sebagai berikut:
String [] keduanya = concat (pertama, kedua);
3. Arrays.copyof ()
Di java6, ada metode Arrays.copyOf() , yang merupakan fungsi generik. Kita dapat menggunakannya untuk menulis metode penggabungan yang lebih umum:
public static <T> t [] concat (t [] first, t [] kedua) {t [] result = arrays.copyof (first, first.length + second.length); System.ArrayCopy (kedua, 0, hasil, first.length, Second.length); Hasil pengembalian;}Jika Anda ingin menggabungkan beberapa, Anda dapat menulis ini:
public static <T> t [] concatall (t [] pertama, t [] ... istirahat) {int totallength = first.length; untuk (t [] array: rest) {totallength += array.length; } T [] result = arrays.copyof (pertama, totallength); int offset = first.length; untuk (t [] array: istirahat) {system.arraycopy (array, 0, hasil, offset, array.length); offset += array.length; } return hasil;}Gunakan sebagai berikut:
String [] keduanya = concat (pertama, kedua); string [] lebih = concat (pertama, kedua, ketiga, keempat);
4. Array.Newinstance
Anda juga dapat menggunakan Array.newInstance untuk menghasilkan array:
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, Hasil, 0, Alen); System.ArrayCopy (B, 0, Hasil, Alen, Blend); Hasil pengembalian;}For more information about Java related content, please check out the topics of this site: "Summary of Java array operation skills", "Summary of Java characters and string operation skills", "Summary of Java mathematical operation skills", "Tutorial on Java Data Structures and Algorithms" and "Summary of Java Operation DOM Node Skills"
Saya harap artikel ini akan membantu pemrograman Java semua orang.