Java, yerleşik bir dizi birleştirme işlemi sunmaz. Dizilerin sabit bir boyutu olduğundan, iki diziyi birleştirmek için daha büyük yeni bir dizi oluşturmak ve elemanları kopyalamak gerekir. Bu makale, bunu başarmak için üç etkili yöntemi ele almaktadır.
İçindekiler Tablosu
- Apache Commons Lang’in
addAll()
metodunu kullanma System.arraycopy()
‘i kullanma- Döngülerle Manuel Birleştirme
Apache Commons Lang’in addAll()
metodunu kullanma
Apache Commons Lang kütüphanesi, ArrayUtils
sınıfı içinde kullanışlı addAll()
metodunu sağlar. Bu, dizi birleştirmeyi önemli ölçüde basitleştirir. Öncelikle, projenize bağımlılığı ekleyin (örneğin, Maven kullanarak):
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version> <!-- En son sürümü kullanın -->
</dependency>
Ardından, şu şekilde kullanın:
import org.apache.commons.lang3.ArrayUtils;
public class ArrayConcatenation {
public static void main(String[] args) {
int[] array1 = {1, 2, 3};
int[] array2 = {4, 5, 6};
int[] concatenatedArray = ArrayUtils.addAll(array1, array2);
for (int i : concatenatedArray) {
System.out.print(i + " "); // Çıktı: 1 2 3 4 5 6
}
}
}
Bu yaklaşım temiz ve verimlidir, ancak harici bir bağımlılık getirir.
System.arraycopy()
‘i kullanma
Java’nın yerleşik System.arraycopy()
metodu yerel bir çözüm sunar. Bu metot, bir dizinin bir bölümünü başka bir diziye kopyalar. Manuel dizi oluşturma ve indeks yönetimi gerektirir:
public class ArrayConcatenation {
public static void main(String[] args) {
int[] array1 = {1, 2, 3};
int[] array2 = {4, 5, 6};
int[] concatenatedArray = new int[array1.length + array2.length];
System.arraycopy(array1, 0, concatenatedArray, 0, array1.length);
System.arraycopy(array2, 0, concatenatedArray, array1.length, array2.length);
for (int i : concatenatedArray) {
System.out.print(i + " "); // Çıktı: 1 2 3 4 5 6
}
}
}
Bu metot verimlidir ve harici kütüphanelerden kaçınır, ancak daha az özlüdür.
Döngülerle Manuel Birleştirme
Daha açık, ancak daha az verimli bir yaklaşım, her iki diziyi de yineleyerek ve yeni bir diziyi doldurarak gerçekleşir:
public class ArrayConcatenation {
public static void main(String[] args) {
int[] array1 = {1, 2, 3};
int[] array2 = {4, 5, 6};
int[] concatenatedArray = new int[array1.length + array2.length];
for (int i = 0; i < array1.length; i++) {
concatenatedArray[i] = array1[i];
}
for (int i = 0; i < array2.length; i++) {
concatenatedArray[array1.length + i] = array2[i];
}
for (int i : concatenatedArray) {
System.out.print(i + " "); // Çıktı: 1 2 3 4 5 6
}
}
}
Bu metot basit ve anlaşılması kolaydır, bu da onu yeni başlayanlar için uygun hale getirir. Bununla birlikte, özellikle büyük diziler için diğer metotlardan daha az verimlidir.
En uygun yaklaşım, öncelikleriniz bağlıdır: addAll()
özlüğü, arraycopy()
harici kütüphaneler olmadan verimliliği ve manuel döngü ise açıklığı sunar. Farklı dizi türleri için kodu ayarlayın (örneğin, String[]
, double[]
).