Neler yeni

Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

  • Merhaba Değerli Ziyaretçimiz, ForumaGel ailesi seni bekliyor! 🌟 Aramıza katılarak güçlü ve samimi topluluğumuzun bir parçası olabilirsin. Burada her üye değerli, her katkı kıymetli. Şimdi üye ol, bizimle birlikte gelişmenin ve keyifli sohbetlerin tadını çıkar! Sevgi ve Saygılarla, ForumaGel Yönetimi ❤️
Yan Yana Banner
Yan Yana Banner
Katılım
7 Nis 2025
Konular
367
Mesajlar
780
Çözümler
1
Tepkime puanı
121
Puan
93
Konum
İstanbul
Web sitesi
forumagel.com
Hazır Kod Bankası - Konu 19: Java'da Diziler (Arrays) ve Temel Koleksiyon Yapıları



Hazır Kod Bankası Serimizin On Dokuzuncu Konusu: Java'da Diziler ve Temel Koleksiyonlar![/B]

Merhaba arkadaşlar! Java'ya giriş yaptıktan ve Nesne Tabanlı Programlamanın temel prensiplerini Java bağlamında inceledikten sonra, şimdi programlamada çok yaygın olarak kullanılan bir ihtiyacı karşılayan yapılara bakıyoruz: Birden fazla veriyi bir arada saklama. Tek bir değişkende sadece bir değer tutabilirken, uygulamalarımız genellikle listeler, koleksiyonlar veya tablolar halinde veri işler.

İşte bu noktada Diziler (Arrays) ve Koleksiyonlar (Collections) devreye girer. Her ikisi de aynı tipteki birden fazla değeri bir yapıda gruplamamızı sağlar, ancak farklı özellikleri ve kullanım senaryoları vardır. Bu konuda Java'daki dizilerin (sabit boyutlu) ve Java Koleksiyonlar Çatısı (Collections Framework) altındaki en yaygın dinamik boyutlu yapılardan biri olan `ArrayList`'in temellerini öğreneceğiz.

1. Diziler (Arrays) Nedir?

Diziler, aynı veri tipindeki sabit sayıda elemanı, ardışık bellek konumlarında depolayan veri yapılarıdır. Boyutları oluşturulduklarında belirlenir ve sonradan değiştirilemez. Diziler, elemanlara indeks numaraları (0'dan başlayarak) aracılığıyla hızlı erişim imkanı sunar.

2. Java'da Diziler

Java'da dizi tanımlama, başlatma ve elemanlarına erişme:

  • Tanımlama: Dizi değişkenini bildirirsiniz. `DataType[] arrayName;` veya `DataType arrayName[];` şeklinde olabilir (ilk kullanım daha yaygın).
    Java:
        int[] sayilar; // int tipinde sayılar dizisi tanımlandı
        String isimler[]; // String tipinde isimler dizisi tanımlandı (daha az kullanılır)
  • Başlatma (Oluşturma): Dizinin boyutunu belirtirsiniz ve bellekte yer ayrılır. Elemanlar varsayılan değerlerle (sayılar için 0, boolean için false, String/objeler için null) başlatılır.
    Java:
        sayilar = new int[5]; // 5 elemanlı int dizisi oluşturuldu. Elemanlar {0, 0, 0, 0, 0} olur.
        String[] isimler = new String[3]; // 3 elemanlı String dizisi oluşturuldu. Elemanlar {null, null, null} olur.
  • Başlatma (Değerlerle Birlikte): Boyutu belirtmeden doğrudan başlangıç değerlerini vererek de başlatabilirsiniz. Boyut, verilen eleman sayısı kadar olur.
    Java:
        int[] notlar = {90, 85, 92, 78}; // 4 elemanlı int dizisi oluşturuldu ve değer atandı.
        String[] renkler = {"Kırmızı", "Mavi", "Yeşil"}; // 3 elemanlı String dizisi.
  • Elemanlara Erişim: Elemanlara 0'dan başlayan indeks numaralarıyla erişilir.
    Java:
        int[] sayilar = {10, 20, 30};
        System.out.println(sayilar[0]); // Çıktı: 10 (İlk eleman)
        System.out.println(sayilar[2]); // Çıktı: 30 (Üçüncü eleman)
    
        sayilar[1] = 25; // İkinci elemanın değerini değiştirme
        System.out.println(sayilar[1]); // Çıktı: 25
    
        // System.out.println(sayilar[3]); // Hata verir! IndexOutOfBoundsException (Dizi boyutu 3, indeksler 0, 1, 2)
  • Dizi Boyutunu Alma: Dizinin `length` özelliği ile boyutuna ulaşılır.
    Java:
        int[] notlar = {90, 85, 92, 78};
        System.out.println("Dizinin boyutu: " + notlar.length); // Çıktı: 4
  • Dizi Üzerinde Döngü: Elemanları gezmek için for döngüsü kullanılır. Hem standart for hem de gelişmiş (enhanced) for kullanılabilir.
    Java:
        String[] renkler = {"Kırmızı", "Mavi", "Yeşil"};
    
        // Standart for döngüsü (indeks ile)
        System.out.println("Standart For ile Renkler:");
        for (int i = 0; i < renkler.length; i++) {
            System.out.println(renkler[i]);
        }
    
        // Gelişmiş (Enhanced) for döngüsü (eleman ile) - Sadece elemanları okumak için ideal
        System.out.println("\nGelişmiş For ile Renkler:");
        for (String renk : renkler) { // Dizideki her String eleman için döngü
            System.out.println(renk);
        }

3. Java Koleksiyonlar Çatısı (Collections Framework) ve ArrayList

Dizilerin sabit boyutlu olması, eleman ekleme veya silme gibi işlemleri verimsiz hale getirebilir. Java Koleksiyonlar Çatısı (Collections Framework), dinamik boyutlu ve daha esnek veri yapıları (`List`, `Set`, `Map` gibi arayüzler ve bunların farklı implementasyonları) sunar.

Bu çatı altındaki en yaygın kullanılan yapılardan biri `ArrayList`'tir. `ArrayList`, `List` arayüzünün bir implementasyonudur ve dinamik olarak büyüyüp küçülebilen, sıralı, elemanların tekrar edebildiği bir listedir.

  • `ArrayList` Tanımlama ve Başlatma: `java.util` paketindedir, bu yüzden import edilmesi gerekir. Generic yapılar kullanır (`<DataType>`) listede hangi tip verinin saklanacağını belirtir.
    Java:
        import java.util.ArrayList; // ArrayList sınıfını içe aktar
    
        // String tipinde elemanlar tutacak bir ArrayList oluşturma
        ArrayList<String> sehirler = new ArrayList<>();
    
        // Integer tipinde elemanlar tutacak bir ArrayList oluşturma
        ArrayList<Integer> numaralar = new ArrayList<>();
  • Yaygın `ArrayList` Metotları:
    • `add(element)`: Listenin sonuna eleman ekler.
    • `add(index, element)`: Belirtilen indekse eleman ekler, diğer elemanları kaydırır.
    • `get(index)`: Belirtilen indeksteki elemanı döndürür.
    • `set(index, element)`: Belirtilen indeksteki elemanın değerini değiştirir.
    • `remove(index)`: Belirtilen indeksteki elemanı siler.
    • `remove(object)`: Belirtilen ilk eşleşen elemanı siler.
    • `size()`: Listedeki eleman sayısını döndürür (dizideki `length` gibi).
    • `clear()`: Listenin tüm elemanlarını siler.
    Java:
        import java.util.ArrayList;
    
        public class ArrayListOrnegi {
            public static void main(String[] args) {
                ArrayList<String> alfabem = new ArrayList<>(); // String tutan ArrayList
    
                alfabem.add("A"); // Sona 'A' ekle
                alfabem.add("C"); // Sona 'C' ekle
                alfabem.add(1, "B"); // 1. indekse (ikinci sıraya) 'B' ekle
    
                System.out.println("Liste: " + alfabem); // Çıktı: Liste: [A, B, C]
    
                System.out.println("Listenin boyutu: " + alfabem.size()); // Çıktı: Listenin boyutu: 3
    
                System.out.println("1. indeksteki eleman: " + alfabem.get(1)); // Çıktı: 1. indeksteki eleman: B
    
                alfabem.set(0, "X"); // 0. indeksteki elemanı 'X' ile değiştir
                System.out.println("Liste Set Sonrası: " + alfabem); // Çıktı: Liste Set Sonrası: [X, B, C]
    
                alfabem.remove(2); // 2. indeksteki elemanı sil ('C')
                System.out.println("Liste Index Remove Sonrası: " + alfabem); // Çıktı: Liste Index Remove Sonrası: [X, B]
    
                alfabem.remove("X"); // 'X' elemanını sil
                System.out.println("Liste Object Remove Sonrası: " + alfabem); // Çıktı: Liste Object Remove Sonrası: [B]
    
                // Liste üzerinde döngü
                System.out.println("\nListe Elemanları:");
                for (String harf : alfabem) { // Gelişmiş for ile
                    System.out.println(harf);
                }
    
                 alfabem.clear(); // Tüm elemanları sil
                 System.out.println("Liste Clear Sonrası: " + alfabem); // Çıktı: Liste Clear Sonrası: []
            }
        }

4. Diziler ve ArrayList Karşılaştırması (Temel Farklar)

  • Boyut: Diziler sabit boyutludur, `ArrayList` dinamik olarak büyüyüp küçülebilir.
  • Performans: Dizilere indeks ile erişim genellikle `ArrayList`'ten daha hızlıdır. Ancak `ArrayList`'e eleman ekleme/silme (özellikle ortalardan) dizilere göre daha maliyetli olabilir (elemanların kaydırılması gerektiği için).
  • Kullanım: Boyutu kesin olarak bildiğiniz ve sık sık eleman ekleme/silme yapmayacağınız durumlar için diziler uygun olabilir. Boyutun değişebileceği ve esnekliğin gerektiği çoğu senaryoda `ArrayList` daha kullanışlıdır.

Sıra Sizde![/B]

Java'da birden fazla değeri bir arada tutmanın iki temel yolu olan diziler ve `ArrayList`'i gördük.

  • Farklı tiplerde (int, double, String) Java dizileri tanımlayıp başlatın. İndekslerle elemanlarına erişin ve değerlerini değiştirin. Dizinin `length` özelliğini ve döngüleri kullanarak elemanları yazdırın.
  • Farklı tiplerde elemanlar tutan `ArrayList`'ler oluşturun. `add()`, `get()`, `set()`, `remove()`, `size()` gibi metotları kullanarak listeyi yönetin ve elemanlarını döngü ile yazdırın.
  • Kendi kendinize, bir senaryo belirleyip (örneğin, "alışveriş sepetindeki ürünler" veya "sıradaki müşteriler" gibi) bu senaryoda dizi mi yoksa `ArrayList` mi kullanmanın daha mantıklı olacağını düşünün.
  • Denemeleriniz sırasında `IndexOutOfBoundsException` hatasını bilerek oluşturmayı ve hata mesajını okumayı deneyin.
Diziler ve `ArrayList` arasındaki farklar, kullanımları veya metotları hakkında aklınıza takılan soruları çekinmeden bu konu altında sorabilirsiniz.

Serinin Geleceği?[/B]

Java'da temel çoklu veri yapıları olan diziler ve `ArrayList`'i gördük. Java Koleksiyonlar Çatısı çok daha zengindir.

Seriyi buradan sonra nasıl devam ettirelim?

  • Java Koleksiyonlar Çatısındaki diğer yapılar (LinkedList, HashSet, HashMap gibi) ve Iterators?
  • Java'da String metotları ve yaygın kullanılan yardımcı sınıflar?
  • Java Dosya İşlemleri (File I/O) ve Hata Yönetimi (Exception Handling) derinlemesine?
  • Temel Veri Yapıları ve Algoritmalar (Bağlı Listeler, Ağaçlar vb.)?
  • Başka bir programlama diline giriş (C#, C++ gibi)?
  • Web geliştirme Frameworklerine giriş (Java Spring/Spring Boot, Python Flask/Django, JS React/Vue/Angular, PHP Laravel/Symfony)?
  • Mobil geliştirme temelleri (Android Studio ile)?
  • Veya başka önerileriniz mi var?
Geri bildirimleriniz ve önerileriniz serinin geleceğini şekillendirecektir.

Umarım bu konu Java'da birden fazla veriyle çalışmaya başlarken faydalı olmuştur. Görüşmek üzere!


Bu konu, "Hazır Kod Bankası" serisinin on dokuzuncu parçasıdır ve "Yazılım Bilgi ve Yeni Başlayanlar İçin" kategorisi altında paylaşılmıştır.
 

Şu an konuyu görüntüleyenler

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz

Zevkini yansıtan rengi seç

Geniş / Dar görünüm

Temanızı geniş yada dar olarak kullanmak için kullanabileceğiniz bir yapıyı kontrolünü sağlayabilirsiniz.

Izgara görünümlü forum listesi

Forum listesindeki düzeni ızgara yada sıradan listeleme tarzındaki yapının kontrolünü sağlayabilirsiniz.

Resimli ızgara modu

Izgara forum listesinde resimleri açıp/kapatabileceğiniz yapının kontrolünü sağlayabilirsiniz.

Kenar çubuğunu kapat

Kenar çubuğunu kapatarak forumdaki kalabalık görünümde kurtulabilirsiniz.

Sabit kenar çubuğu

Kenar çubuğunu sabitleyerek daha kullanışlı ve erişiminizi kolaylaştırabilirsiniz.

Köşe kıvrımlarını kapat

Blokların köşelerinde bulunan kıvrımları kapatıp/açarak zevkinize göre kullanabilirsiniz.

Geri