İlginizi Çekebilir
Java İki Boyutlu Dizi Nedir
  1. Ana Sayfa
  2. Java
  3. Java Çok Boyutlu Diziler Nedir?

Java Çok Boyutlu Diziler Nedir?

Daha önce “Java’da Diziler” başlığı altında kısa bir şekilde bahsetmiş olduğum fakat yeterli açıklamalara yer vermediğim çok boyutlu dizi kavramını ele alacağız, daha sonra “Java Çok Boyutlu Dizi Nedir” sorusuna cevap arayarak konumuzun detaylarına ineceğiz. 🕵️

Günümüzde verilerin depolanması, depolanan verilerin analizi, işlenmesi ve değerlendirilmesi oldukça önemli bir husus. Bu yüzden programlarımızın küçük çaplı veri ambarı görevini gören diziler bizim için oldukça önemli bir yere sahip. Bu yapıları daha yakından anlayabilmemizin yolu teorik olarak kendisini tanımamızdan geçer, bu yüzden serüvenimizin ilk adımını atacağımız “Java Çok Boyutlu Diziler Nedir” başlığına geçiş yapabiliriz. 🚀

Java Çok Boyutlu Diziler Nedir?

Java Çok Boyutlu Diziler, oluşturulurken tanımlanan veri tipine ait değerlerin tutulduğu, yüksek performans, verilerin güvenliği ve birden fazla satır ve sütunlardan oluşan yapılar için kullanılan bir kavramdır. Çok boyutlu dizi yapılarını x ve y koordinatlarına sahip bir yapı olarak düşünebiliriz. Oluşumu gereği satırı ve sütunları bulunan matrisler olarak da tanınır.

İhtiyaca göre oluşturulan çok boyutlu diziler oluştuğu yapı gereği iki boyutlu, üç boyutlu gibi isimlerde alabilir. Biz bu dizileri nasıl oluşturacağız, hangi dizi iki boyutlu hangi dizi üç boyutlu oluyor diye aklınızda bir soru işareti oluştuysa artık bir sonraki aşamamıza geçiş yapabiliriz.

Çok Boyutlu Dizilerin Tanımlanması

Çok boyutlu dizilerin tanımlanması aslında tek bir tipten oluşmaz. Oluştururken dikkat etmemiz ve doğru uygulamamız gereken bazı püf noktaları vardır. En genel hatlarıyla çok boyutlu diziyi şu şekilde oluştururuz:

veriTipi diziAdı [satır][sütun] = new veriTipi [satırSayısı][sütunSayısı];

  • Oluştururken ilk aşama olarak dizimizin hangi türlerde verilerin (int, string, double, vb.) tutulacağını belirlememiz gerekir.
  • Daha sonra dizimizin ismini belirledikten sonra dizimizin oluşmasını istediğimiz boyut yapısına göre köşeli parantez ([]) oluştururuz.
  • Bu aşamadan sonra dizi yapılarımızın içerisinde barındıracağımız eleman sayısı belliyse new anahtar sözcüğü ile dizimizi tanımlarız. Eğer eleman sayımız belli değilse bu dizimizin bir referansını oluştururuz.

Dizimizin referansını oluşturmak için aşağıda paylaşmış olduğum şekilde bir tanımlama oluşturmamız yeterli olacaktır.

veriTipi diziAdı [][]; ///-> Örnek: double veriler[][];

Çok boyutlu dizi yapılarını ve kullanımı hakkında daha detaylı bir fikir sahibi olabilmemiz için gelin iki boyutlu bir dizinin oluşum görselini inceleyelim.

Java İki Boyutlu Diziler
Java Çok Boyutlu Diziler

Görseli görünce bazı şeylerin aklımızda canlanmaya başladığını düşünüyorum. Programımızda iki boyutlu 4 satırdan ve 4 sütundan oluşan bir dizi tanımlamış olsaydık hafıza belleğimizde bu tabloya benzer bir alan ayrılacaktı.🧬

.

Java Çok Boyutlu Dizi Örnekleri

Teorik olarak öğrendiğimiz bilgiyi şekillendirmek ve aklımızda kalıcı bir yer oluşturmasını sağlamak için ilerleyen zamanlarda projelerimizde kullanabileceğimiz tarzda değişik örnekler çözmemiz gerektiğini düşünüyorum.

Bu yüzden örnek uygulamalar aklınızı karıştırabilir. Böyle bir durumda aşağıda bulunan yorum yap kısmından bana anlamadığınız örnek yapısını sorabilir ve aklınızdaki karmaşıklığı giderebilirsiniz. 💬👍🏻

Çoğu örnek yapısında uygulamayı sevdiğim ve aslında çok boyutlu dizi kavramını bizim için daha da anlamlı bir hale getireceğini düşündüğüm “öğrenci not ortalaması hesaplama” uygulamasını ilk örnek olarak oluşturmak istiyorum.

Bu örnek uygulamamız için uyguladığım aşamaları aşağıda maddeler halinde gözlemleyebilirsiniz.

  1. Örneğim içerisinde kullanacağım değişkenleri, dizileri ve metotları daha rahat kontrol edebilmek için “MultiArrayManager” isminde bir sınıf oluşturarak işlemime başladım.
  2. Öğrencilerin notlarını, ortalamalarını ve harf notlarını tutmak için çeşitli değişkenlerin tanımlamasını yaparak işlemime devam ettim.
  3. Öğrencilere rastgele bir şekilde not girilmesini istediğimden dolayı “Random” sınıfının tanımlamasını gerçekleştirdim.
  4. Daha sonra öğrencilerimin isimlerinin yer alacağı tek boyutlu bir dizi tanımlayarak bazı isimler girdim.
  5. Girmiş olduğum öğrenci isimlerinin sayısına ve tanımlamış olduğum değişkin yapılarına uygun bir çok boyutlu dizi tanımladım.
  6. Bu tanımlamış olduğum dizide string, int, double gibi veri tipleri yer alacağından dizimin veri tipini Object olarak belirledim.
  7. Tanımlama işlemlerim bittikten sonra öğrencilerin not ortalamasına göre bir harf notu almasını istediğimden dolayı basit bir hesaplama yürüten “getHarfNotu” isminde bir metot tanımladım.
  8. Daha sonra çok boyutlu dizime elemanların yerleşmesini yapacak “createArray” isminde bir metot tanımlayarak iki boyutlu dizimin içerisini doldurdum.
  9. Tüm bu işlemler sonunda oluşan öğrenci dizimin ekrana çıktı olarak gösterilmesini sağlayacak “getArray” isminde bir metot daha oluşturarak “MultiArrayManager” sınıfımın içeriğini sonlandırdım.
  10. Sınıf yapımın içeriğini aşağıda görebilirsiniz:

    import java.text.DecimalFormat;
    import java.util.Random;
    
    public class MultiArrayManager {
        ///---> Değişken Tanımlaması <---\\\
        private int vizeNotu,finalNotu;
        private double notOrtalamasi; ///---> Vize notunun %40 ile Final notunun %60'ı alınarak hesaplanacak.
        private String harfNotu,ayrac = "-------------";
    
        ///---> Random Oluşacak Notlar İçin Tanımlama <---\\\
        private Random random = new Random();
    
        ///---> Dizi Tanımlaması <---\\\
        private String ogrIsimleri [] = {"Metehan","Ömer","Mustafa","Enes","Mert","İhsan","Oktay","Emre"}; ///--->  8 elemanı bulunan tek boyutlu bir dizi.
        private Object ogrBilgileri [][] = new Object [ogrIsimleri.length][5]; /// ---> Çok boyutlu dizimizin 8 Satır 5 Sütundan oluşmasını istiyoruz.
    
    
        ///---> Metot Tanımlamaları <---\\\
        private String  getHarfNotu(double notOrtalamasi){
            if(notOrtalamasi >= 88 && notOrtalamasi <= 100)
                return "AA";
            else if(notOrtalamasi >= 77 && notOrtalamasi < 88)
                return "BA";
            else if(notOrtalamasi >= 66 && notOrtalamasi < 77)
                return "BB";
            else if(notOrtalamasi >= 55 && notOrtalamasi < 66)
                return "CB";
            else if(notOrtalamasi >= 44 && notOrtalamasi < 55)
                return "CC";
            else if(notOrtalamasi >= 33 && notOrtalamasi < 44)
                return "DC";
            else
                return "FF";
        }
        protected  void createArray(){
            for(int i=0; i < ogrIsimleri.length; i++){
                vizeNotu = random.nextInt(100)+1;
                finalNotu = random.nextInt(100)+1;
                notOrtalamasi = (vizeNotu*0.4)+(finalNotu*0.6);
                ogrBilgileri[i][0] =ogrIsimleri[i] ;
                ogrBilgileri[i][1] = vizeNotu;
                ogrBilgileri[i][2] = finalNotu;
                ogrBilgileri[i][3] = new DecimalFormat("##.##").format(notOrtalamasi);
                ogrBilgileri[i][4] = getHarfNotu(notOrtalamasi);
            }
        }
        protected  void getArray(){
            if(ogrBilgileri[0][0] != null){
                System.out.println(ayrac+"\n< Öğrenci Not Bilgileri >\n"+ayrac);
                System.out.print("Öğrenci İsmi\t\tVize Notu\t\tFinal Notu\t\tNot Ortalaması\t\tHarf Notu\n"+ayrac+"\n");
                for(int i = 0 ; i < ogrIsimleri.length ; i++)
                    System.out.println(ogrBilgileri[i][0]+"\t\t\t\t"+ogrBilgileri[i][1]+"\t\t\t\t"+ogrBilgileri[i][2]+"\t\t\t\t"+ogrBilgileri[i][3]+"\t\t\t\t"+ogrBilgileri[i][4]);
                System.out.println(ayrac);
            }
            else
                System.out.println(ayrac+"\n-> Lütfen öncelikle diziyi oluşturun.\n"+ayrac);
        }
    }
  11. Daha sonra bu yapmış olduğum tanımlamaları kontrol etmek için “Main” sınıfıma gelerek sınıfımın tanımlamasını gerçekleştirdim ve çok boyutlu dizimin çıktısını kontrol ettim.
  12. public class Main {
    
        public static void main(String[] args) {
            MultiArrayManager arrayManager = new MultiArrayManager();
            arrayManager.createArray();
            arrayManager.getArray();
        }
    }

Kod Çıktısı:

Java İki Boyutlu Dizi Örnekleri
Java Çok Boyutlu Dizi Örnekleri

Java Çok Boyutlu Diziler konusunu anlamamız için oldukça detaylı ve güzel bir örnek çalışması olduğunu düşünüyorum. Fakat işlemleri tamamen otomatik bir yapı içerisine sokarak dizilerin elemanlarını arka planda oluşturulmasını ve eklenmesini sağladık. Bu yapıyı biraz daha kullanıcının isteklerine bırakmayı deneyerek basit bir örnek uygulaması daha oluşturalım. 🧾

  1. İlk örneğimiz gibi kompleks bir yapıdan ziyade direkt işlemlerimizi “Main” sınıfı içerisinde yürütmeye karar verdim.
  2. Bu kararımdan sonra kullanıcıdan alacağım değerleri tutacağım, hesaplamaları yapacağım bazı değişkenler tanımladım.
  3. Kullanıcıdan değer alabilmek için “Scanner” sınıfının tanımlamasını gerçekleştirdim
  4. Bu tanımlama işlemlerinden sonra kullanıcıdan kaç satır ve kaç sütundan oluşacak bir dizi tanımlamak istediğini sorarak ilgili değerleri girmesini istedim.
  5. Girmiş olduğu değerlere göre dizinin tanımlamasını gerçekleştirdim.
  6. İç içe for döngüsü ile iki boyutlu dizimin satır ve sütunlarına ulaşarak kullanıcın ilgili yerlere değer girmesini isteyerek basit bir if-else kontrol yapısı ile girilen değerin tek ya da çift olup olmadığını kontrol ettim.
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        ///---> Değişken Tanımlaması <---\\\
        String ayrac = "------";
        int diziSatiri,diziSutunu,deger,ciftSayi=0,tekSayi=0,ciftToplam=0,tekToplam=0,genelToplam=0;
        int diziAdi [][]; //---> Kullanıcıdan alacağım değere göre dizinin tanımlamasını gerçekleştireceğim.

        ///---> Scanner Sınıfının Tanımlanamsı <---\\\
        Scanner scanner = new Scanner(System.in);

        System.out.println(ayrac+"\n< Java İki Boyutlu Dizi Örnekleri >\n"+ayrac);
        System.out.print("-> Oluşturacağınız dizinin satır sayısı: ");
        diziSatiri = scanner.nextInt();
        System.out.print("-> Oluşturacağınız dizinin sütun sayısı: ");
        diziSutunu = scanner.nextInt();
        System.out.println(ayrac);
        diziAdi = new int[diziSatiri][diziSutunu];
        for(int i=0; i< diziSatiri ;i++){
            for(int k=0; k< diziSutunu; k++){
                System.out.print("-> ["+i+"]["+k+"] matris elemanını girin: ");
                deger = scanner.nextInt();
                genelToplam += deger;
                if(deger % 2 == 0){
                    ciftSayi += 1;
                    ciftToplam += deger;
                }
                else {
                    tekSayi += 1;
                    tekToplam += deger;
                }
            }
        }
        System.out.println(ayrac+"\n-> Dizi değerlerinin toplamı: "+genelToplam +"\n"+ayrac+"\n-> Toplam çift sayı adeti: "+ciftSayi +"\n-> Çift sayıların toplamı: "+ciftToplam+"\n"+ayrac+"\n-> Toplam tek sayı adeti: "+tekSayi+"\n-> Tek sayıların toplamı: "+tekToplam+"\n"+ayrac);


    }
}

Kod Çıktısı:

Java Çok Boyutlu Dizi Örnekleri
Java İki Boyutlu Dizi Örnekleri

Java Çok Boyutlu Diziler Nedir” sorusuna cevap vererek öğrendiğimiz teorik bilgiyi şekillendirdiğimiz örnek yapılarımız bittiğine göre artık konumuzun sonuna geldik diyebiliriz. Eğer konuya devam etmek ve farklı bir kaynaktan daha inceleme yapmak isterseniz sizlere Oracle tarafından hazırlanmış buradan ulaşabileceğiniz içeriği tavsiye ederim.

Unutmayın, aklınıza takılan herhangi bir soruyu ya da konu işleyişi ile ilgili önerilerinizi aşağıda bulunan yorum yap kısmından bana iletebilirsiniz.👋🏻

Yorum Yap

Yazar Hakkında

Yazmayı, öğrenmeyi, öğrendiklerini paylaşmayı , kodlamayı ve günün birinde Yönetim Bilişim Sistemleri Uzmanı olmanın hayalini kuran birisiyim.

Yorum Yap