UmutSoftware
 Eğitim ve Bilgi Paylaşım Bloğu
Forum Anasayfası Forum Anasayfası >Programlama >Java Programlama Dili Kod Paylaşım Merkezi
  Yeni Mesajlar Yeni Mesajlar
  SSS SSS  Forumu Ara   Kayıt Ol Kayıt Ol  Giriş Giriş

Çok Boyutlu Diziler

 Yanıt Yaz Yanıt Yaz
Yazar
Mesaj
  Konu Arama Konu Arama  Konu Seçenekleri Konu Seçenekleri
administrator Açılır Kutu Gör
Yönetici
Yönetici
Simge

Kayıt Tarihi: 01.Ocak.2007
Aktif Durum: Aktif Değil
Gönderilenler: 779
  Alıntı administrator Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: Çok Boyutlu Diziler
    Gönderim Zamanı: 13.Temmuz.2010 Saat 00:04

Çok boyutlu diziler, Java�da diğer programlama dillerinden farklıdır. Sonuçta dizinin tek türde olması gerekir; yani, dizi içerisinde diziler (dizilerin içerisinde dizilerin içerisindeki diziler şeklinde de gidebilir...) tanımlayabilirsiniz.

 

Gösterim-3.16:

 

 int[][] t1 = {

     { 1, 2, 3, },

     { 4, 5, 6, },

 };

 

 

Gösterim-3.16 'de ifade edildiği gibi iki boyutlu temel türden oluşmuş çok boyutlu dizi oluşturulabilir. Çok boyutlu dizileri oluşturmanın diğer bir yolu ise,

 

Gösterim-3.17:

 

int [] [] t1 = new int [3][4] ;

int [] [] t1 = new int [][4] ; // ! Hata !

 

 

Çok boyutlu dizileri bir uygulama üzerinde incelersek;

 

Örnek:  CokBoyutluDizilerOrnekBir.java

 

public class CokBoyutluDizilerOrnekBir {

  public static void main(String args[]) {

      int ikiboyutlu[][] = new int[3][4] ;

      ikiboyutlu[0][0] = 45 ;

      ikiboyutlu[0][1] = 83 ;

      ikiboyutlu[0][2] = 11 ;

      ikiboyutlu[0][3] = 18 ;

 

      ikiboyutlu[1][0] = 17 ;

      ikiboyutlu[1][1] = 56 ;

      ikiboyutlu[1][2] = 26 ;

      ikiboyutlu[1][3] = 79 ;

 

      ikiboyutlu[2][0] = 3 ;

      ikiboyutlu[2][1] = 93 ;

      ikiboyutlu[2][2] = 43 ;

      ikiboyutlu[2][3] = 12 ;

 

      // ekrana yazdırıyoruz

      for (int i = 0 ; i<ikiboyutlu.length ; i++ ) {

        for (int j = 0 ; j < ikiboyutlu.length ; j++ ) {

          System.out.println(" ikiboyutlu["+i+"]["+j+"] = "

                                              + ikiboyutlu[j] );

        }

      }

  }

}

 

 

Verilen örnekte int türünde 3�e 4�lük (3x4) çok boyutlu dizi oluşturuldu; bu diziyi 3�e 4'lük bir matris gibi de düşünülebilir. Uygulama sonucu aşağıdaki gibi olur

 

ikiboyutlu[0][0] =45

ikiboyutlu[0][1] =83

ikiboyutlu[0][2] =11

ikiboyutlu[0][3] =18

ikiboyutlu[1][0] =17

ikiboyutlu[1][1] =56

ikiboyutlu[1][2] =26

ikiboyutlu[1][3] =79

ikiboyutlu[2][0] =3

ikiboyutlu[2][1] =93

ikiboyutlu[2][2] =43

ikiboyutlu[2][3] =12

 

Uygulama sonucu matris gibi düşünülürse aşağıdaki gibi olur:

 

45 83 11 18

17 56 26 79

 3 93 43 12

 

Uygulama şekilsel olarak gösterilirse:

Dizilere bağlı diğer dizilerin aynı boyutta olma zorunluluğu yoktur.

 

Örnek-3.36:  CokBoyutluDiziler.java

 

public class CokBoyutluDiziler {

 

  public static void main(String args[]) {

      int ikiboy[][] = new int[3][];    

 

      ikiboy[0] = new int[2] ;

      ikiboy[1] = new int[1] ;

      ikiboy[2] = new int[3] ;

 

      ikiboy[0][0] = 89 ;

      ikiboy[0][1] = 32 ;      

 

      ikiboy[1][0] = 5 ;

 

      // ikiboy[1][1] = 3 ; // ! Hata !              

 

      ikiboy[2][0] = 55 ;

      ikiboy[2][1] = 78 ;

      ikiboy[2][2] = 49 ;

  }

}

 

Yukarıda verilen örnekte görüldüğü gibi, dizilere bağlı her farklı dizinin boyutları birbirinden farklı olmuştur. Şekil üzerinde ifade etmeye çalışırsak.

Çok boyutlu dizilerin içerisine sınıf tiplerinin yerleştirilmesi de olasıdır. Örneğin String sınıfı tipinde olan çok boyutlu bir dizi oluşturulabilir

 

Örnek-3.37:  HayvanlarAlemi.java

 

public class HayvanlarAlemi {

 

  String isimler[][][] ;

 

  public HayvanlarAlemi() {

      isimler = new String[2][2][3] ;

      veriAta();

  }

 

  public void veriAta() {

      isimler[0][0][0] = "aslan" ;

      isimler[0][0][1] = "boz AyI" ;

      isimler[0][0][2] = "ceylan";

 

      isimler[0][1][0] = "deniz AnasI" ;

      isimler[0][1][1] = "essek" ;

      isimler[0][1][2] = "fare" ;

 

      isimler[1][0][0] = "geyik" ;

      isimler[1][0][1] = "hamsi" ;

      isimler[1][0][2] = "inek" ;

 

      isimler[1][1][0] = "japon baligi" ;

      isimler[1][1][1] = "kedi" ;

      isimler[1][1][2] = "lama" ;

 

  ekranaBas() ;

  }

 

  public void ekranaBas() {

      for (int x = 0 ; x < isimler.length ; x++) {

        for (int y = 0 ; y < isimler[x].length ; y++) {

          for (int z = 0 ; z < isimler[x][y].length ; z ++) {

               System.out.println("isimler["+x+"]["+y+"]["+z+"] =" +

                                             isimler[x][y][z]);

          }

        }

      }

  }

 

  public static void main(String args[]) {

      HayvanlarAlemi ha = new HayvanlarAlemi();

  }

}

 

 

Bu örnekte HayvanlarAlemi nesnesinin oluşturulmasıyla olaylar tetiklinmiş olur. İster tek boyutlu olsun ister çok boyutlu olsun, diziler üzerinde işlem yapmak isteniyorsa, onların oluşturulması (new anahtar kelimesi ile) gerektiği daha önceden belirtilmişti... Bu örnekte olduğu gibi, dizi ilk oluşturulduğunda, dizi içerisindeki String tipindeki referansların ilk değeri nulldır. Uygulamanın sonucu aşağıdaki gibi olur

 

isimler[0][0][0] =aslan

isimler[0][0][1] =boz AyI

isimler[0][0][2] =ceylan

isimler[0][1][0] =deniz AnasI

isimler[0][1][1] =essek

isimler[0][1][2] =fare

isimler[1][0][0] =geyik

isimler[1][0][1] =hamsi

isimler[1][0][2] =inek

isimler[1][1][0] =japon baligi

isimler[1][1][1] =kedi

isimler[1][1][2] =lama

 

Oluşan olaylar şekilsel olarak gösterilmeye çalışılırsa:

 

Yukarı Dön
 Yanıt Yaz Yanıt Yaz

Forum Atla Forum İzinleri Açılır Kutu Gör