

9. Diziler ve Koleksiyonlar (Array, ArrayList, HashMap, vb.)
Java programlama dilinde, verileri organize etmek ve yönetmek için kullanılan temel yapılar diziler (Arrays) ve koleksiyonlardır (Collections). Bu yapılar, programların daha verimli ve düzenli çalışmasını sağlar. Bu makalede, Java’daki dizileri ve en yaygın kullanılan koleksiyonları (ArrayList, HashMap, vb.) ayrıntılı olarak inceleyeceğiz.
Diziler (Arrays)
Diziler, aynı türden verileri ardışık bellek konumlarında saklayan veri yapılarıdır. Diziler, sabit boyutlu olup, oluşturulduktan sonra boyutları değiştirilemez. Java’da diziler, nesne olarak kabul edilir ve `new` anahtar kelimesi ile oluşturulurlar.
Dizi Tanımlama ve Oluşturma
Bir diziyi tanımlamak için, veri türünü ve dizi boyutunu belirtmelisiniz. İşte bazı örnekler:
int[] sayilar = new int[5]; // 5 elemanlı bir int dizisi
String[] isimler = new String[10]; // 10 elemanlı bir String dizisi
Diziyi tanımlarken, elemanları doğrudan da atayabilirsiniz:
int[] sayilar = {1, 2, 3, 4, 5};
String[] isimler = {"Ali", "Ayşe", "Mehmet"};
Dizi Elemanlarına Erişim
Dizi elemanlarına erişmek için, indeks numarasını kullanırsınız. Java’da dizi indeksleri 0’dan başlar. Örneğin:
int[] sayilar = {10, 20, 30, 40, 50};
int ilkEleman = sayilar[0]; // ilkEleman 10 değerini alır
int ucuncuEleman = sayilar[2]; // ucuncuEleman 30 değerini alır
Dizi sınırlarının dışına çıkmamaya dikkat edin. Aksi takdirde, `ArrayIndexOutOfBoundsException` hatası alırsınız.
Dizi Uzunluğu
Bir dizinin uzunluğunu öğrenmek için `length` özelliğini kullanabilirsiniz:
int[] sayilar = {1, 2, 3, 4, 5};
int uzunluk = sayilar.length; // uzunluk 5 değerini alır
Koleksiyonlar (Collections)
Koleksiyonlar, nesneleri gruplar halinde saklamak ve yönetmek için kullanılan veri yapılarıdır. Java Collections Framework, çeşitli koleksiyon türlerini ve bu koleksiyonlar üzerinde işlem yapmak için kullanılan algoritmaları içerir. Dizilerden farklı olarak, koleksiyonlar genellikle dinamik boyutludur ve eleman ekleme veya çıkarma işlemlerine daha esnek bir şekilde izin verirler.
ArrayList
`ArrayList`, dinamik boyutlu bir dizi olarak düşünülebilir. Eleman ekleme ve çıkarma işlemlerinde esneklik sağlar. `ArrayList`, `java.util` paketinde bulunur.
ArrayList Oluşturma ve Eleman Ekleme
import java.util.ArrayList;
ArrayList sehirler = new ArrayList<>();
sehirler.add("İstanbul");
sehirler.add("Ankara");
sehirler.add("İzmir");
ArrayList Elemanlarına Erişim
`ArrayList` elemanlarına erişmek için `get()` metodunu kullanırsınız:
String ilkSehir = sehirler.get(0); // ilkSehir "İstanbul" değerini alır
ArrayList Eleman Sayısı
`ArrayList` içindeki eleman sayısını öğrenmek için `size()` metodunu kullanırsınız:
int elemanSayisi = sehirler.size(); // elemanSayisi 3 değerini alır
HashMap
`HashMap`, anahtar-değer (key-value) çiftlerini saklayan bir koleksiyon türüdür. Her anahtar benzersiz olmalıdır. `HashMap`, `java.util` paketinde bulunur. Hızlı erişim sağlar.
HashMap Oluşturma ve Eleman Ekleme
import java.util.HashMap;
HashMap<String, Integer> ogrenciYaslari = new HashMap<>();
ogrenciYaslari.put("Ali", 20);
ogrenciYaslari.put("Ayşe", 22);
ogrenciYaslari.put("Mehmet", 21);
HashMap Elemanlarına Erişim
`HashMap` elemanlarına erişmek için `get()` metodunu kullanırsınız. Anahtarı belirtmeniz gerekir:
int aliYasi = ogrenciYaslari.get("Ali"); // aliYasi 20 değerini alır
HashMap Anahtar ve Değerlerini Döngüyle Gezme
`HashMap` içindeki anahtarları ve değerleri döngüyle gezmek için `keySet()` ve `values()` metodlarını kullanabilirsiniz:
for (String isim : ogrenciYaslari.keySet()) {
int yas = ogrenciYaslari.get(isim);
System.out.println(isim + "'nin yaşı: " + yas);
}
Diğer Koleksiyonlar
Java Collections Framework’te `LinkedList`, `HashSet`, `TreeSet` gibi başka koleksiyon türleri de bulunmaktadır. Her bir koleksiyonun kendine özgü avantajları ve kullanım alanları vardır. Örneğin:
- LinkedList: Eleman ekleme ve çıkarma işlemlerinin sık yapıldığı durumlarda tercih edilir.
- HashSet: Benzersiz elemanları saklamak için kullanılır ve hızlı arama performansı sunar.
- TreeSet: Elemanları sıralı olarak saklamak için kullanılır.
Diziler ve Koleksiyonlar Arasındaki Farklar
Diziler ve koleksiyonlar arasındaki temel farklar şunlardır:
- Boyut: Diziler sabit boyutludur, koleksiyonlar ise genellikle dinamik boyutludur.
- Veri Türü: Diziler, belirli bir veri türündeki elemanları saklar. Koleksiyonlar, nesneleri saklar (primitif veri türleri için wrapper sınıfları kullanılır).
- Esneklik: Koleksiyonlar, eleman ekleme ve çıkarma işlemlerinde dizilere göre daha esnektir.
- Metodlar: Koleksiyonlar, elemanları yönetmek için çeşitli metodlar sunar (add, remove, get, vb.).
Sonuç
Java’da diziler ve koleksiyonlar, verileri organize etmek ve yönetmek için güçlü araçlardır. Diziler, sabit boyutlu ve aynı türden verileri saklamak için idealdir. Koleksiyonlar ise, dinamik boyutlu ve farklı türden nesneleri saklamak için daha uygundur. Programlarınızın ihtiyaçlarına göre, doğru veri yapısını seçmek, performans ve okunabilirlik açısından önemlidir.
Bu makalede, diziler ve temel koleksiyonlar (ArrayList, HashMap) hakkında bilgi verdik. Java Collections Framework’teki diğer koleksiyon türlerini de araştırmanızı öneririz.
Bir yanıt bırakın