Skip to main content

Java'da Liste Dizisi ve Dizi Listesi (Array of ArrayList / ArrayList of Array) 📚

🧠 Teknik Özet

Ana Konu: Java’da Array of ArrayList ve ArrayList of Array oluşturma. Çözdüğü Problem: Sabit boyutlu diziler ile esnek ArrayList yapılarının birlikte kullanımını sağlar. Kullanıcı Adımları:

  1. Liste Dizisi (List<T>[]) oluşturur ve doldurur.
  2. Dizi Listesi (ArrayList<T[]>) ile esnek koleksiyon oluşturur.
  3. Farklı veri tipleri için ArrayList<Object[]> kullanır.

🔹 1. Liste Dizisi (Array of ArrayList)

Bu yapı, her elemanı bir List nesnesi olan sabit boyutlu bir dizidir.

⚠️ Generic Dizi Oluşturma Kısıtlaması

Java, Type Erasure (Tip Silinmesi) nedeniyle new List<String>[2] gibi Generic dizilerin oluşturulmasına izin vermez. Bu durum, çalışma zamanı güvenliği içindir.

💻 Örnek – Liste Dizisi Oluşturma

import java.util.ArrayList;
import java.util.List;

public class JavaListeDizisiOrnek {
public static void main(String[] args) {
List<String> liste1 = new ArrayList<>();
liste1.add("Rabisu");
liste1.add("Bulut");

List<String> liste2 = new ArrayList<>();
liste2.add("tr1");
liste2.add("tr2");
liste2.add("tr3");

// Generic kullanılmaz, derleme hatası almamak için tipi belirtilmez
List<String>[] listeDizisi = new List[2];
listeDizisi[0] = liste1;
listeDizisi[1] = liste2;

for (List<String> liste : listeDizisi) {
System.out.println(liste);
}
}
}

💡 Not: new List<String>[2] kullanılamaz, new List[2] şeklinde tanımlanmalıdır.


🔹 2. Dizi Listesi (ArrayList of Array)

Bu yapı, her elemanı bir dizi olan esnek bir ArrayList koleksiyonudur. Bu yapı, Generic kurallarına tamamen uygundur.

💻 Örnek – String Dizilerinden Oluşan ArrayList

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class JavaDiziListesiOrnek {
public static void main(String[] args) {
List<String[]> diziListesi = new ArrayList<>();

String[] dizi1 = { "sunucu", "disk", "ağ" };
String[] dizi2 = { "10.0.1.1", "10.0.1.2", "10.0.1.3" };

diziListesi.add(dizi1);
diziListesi.add(dizi2);

for (String[] dizi : diziListesi) {
System.out.println(Arrays.toString(dizi));
}
}
}

🧠 Avantaj: Farklı uzunluklardaki dizileri tek bir listede saklayabilirsiniz.


🔹 3. Farklı Tipte Diziler (ArrayList of Object[])

Birden fazla veri türündeki dizileri tek bir listede tutmak istiyorsanız, ArrayList<Object[]> yapısını kullanabilirsiniz.

💻 Örnek – String ve Integer Dizilerini Birleştirme

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ObjectDiziListesi {
public static void main(String[] args) {
List<Object[]> liste = new ArrayList<>();

String[] strDizi = { "TR", "EU", "US" };
Integer[] intDizi = { 101, 102, 103 };

liste.add(strDizi);
liste.add(intDizi);

for (Object[] objDizi : liste) {
System.out.println(Arrays.toString(objDizi));

for (Object obj : objDizi) {
if (obj instanceof String) {
// String türü için özel işlem
} else if (obj instanceof Integer) {
// Integer türü için özel işlem
}
}
}
}
}

💬 Not: instanceof operatörü, karışık türlerde güvenli işlem yapmayı sağlar.


📚 Sıkça Sorulan Sorular (SSS)

1. Generic diziler neden oluşturulamıyor? Java'da generics yapısı Type Erasure nedeniyle çalışma zamanında tip bilgisini korumaz. Bu da List<String>[] gibi yapıları güvenlik açısından riskli hale getirir.

2. Dizi Listesi mi yoksa Liste Dizisi mi tercih edilmeli?

  • Array of ArrayList → Sabit sayıda liste gerektiğinde.
  • ArrayList of Array → Esnek, dinamik veri yapılarında önerilir.

3. Bu yapılar nerelerde kullanılır? Çok boyutlu veri tabloları, dinamik matrisler veya JSON benzeri veri organizasyonlarında tercih edilir.

4. Arrays.toString() neden gerekli? Bir diziyi doğrudan yazdırmak bellekteki adresini verir. Arrays.toString() gerçek içeriği görüntüler.


🏁 Sonuç

Java’da dizi ve koleksiyon yapılarının birlikte kullanımı, karmaşık veri yapılarını daha düzenli hale getirir. ArrayList of Array yapısı esnekliğiyle öne çıkar; Array of ArrayList ise sabit yapı gereksinimleri için idealdir.

☁️ Veri yönetimi ve çok boyutlu Java projelerinizi yüksek performanslı şekilde çalıştırmak için Rabisu Bulut Platformu’nu hemen deneyin.