DİZİLERE GİRİŞ

Dizi, klasik tanımı ile bünyesinde aynı tip verilerin tutulduğu bir yapıdır.Java’ da diziler birer nesnedir. Bu özelliği ile yüksek performans ve güvenlik sağlar.

DİZİ TANIMLAMA ŞEKİLLERİ

Java’ da dizi tanımlaması şu şekilde yapılır:

int[] dizi; //dizi için bir referans tanımlandı

Bir kaç örnek verecek olursak :

int dizi1[];
String dizi2[];
Object dizi3[];
byte dizi4[];

Dizinin içerisini doldurmak için :

int dizi[] = {1,2,3,4};

şeklinde tanımlanmalıdır.

Eğer ilk satırda doldurmazsak, herhangi bir satırda new anahtar sözcüğünü kullanarak da doldurabiliriz.
Bunun için :

int dizi[];
dizi = new int[]{1,2,3,4};

DİZİ ELEMANINA ERİŞME

Dizideki elemanların her birinin indisi vardır. Dizideki elemanlara bu indis ile erişilir. Dizilerin indisi 0 (sıfır)’ dan başlar.

Bir dizinin elemanına erişmek için parantez içerisine, erişmek istenen elemanın indisi yazılır.

int[] dizi = {1,4,7,9};
System.out.println(dizi[0]);
System.out.println(dizi[1]);
System.out.println(dizi[2]);

Ekran çıktısı :

1
4
7

DİZİ ELEMANLARINI LİSTELEMEK

İçerisi doldurulmuş bir dizinin elemanlarını basit olarak bir for döngüsü ile listeleyebiliriz.

package com.org.java;
public class Java{
public static void main (String [] args) {
  int dizi[] = new int[5];
  dizi = new int[]{1,2,3,4,5};
  for (int i = 0; i < 5; i++)
    System.out.println(dizi[i])
}
}

Ekran çıktısı :

1
2
3
4
5

OBJECT SINIFINDAN BİR DİZİ OLUŞTURMAK

Eğer dizimizde birbirinden farklı tipte veriler tutmak istiyorsak karşımıza Object sınıfı çıkıyor. Object sınıfı sayesinde birbirinden farklı tipleri tek bir dizide saklayabiliriz.

Örnek verecek olursak :

package com.org.java;
public class Java{
  public static void main (String [] args)
  {
    Object dizi[] = new Object[3];
    dizi[0] = "Can";
    dizi[1] = 2;
    dizi[2] = 444.3;
    for (int i = 0; i < 3; i++)
      System.out.println(dizi[i])
  }
}

Ekran çıktısı :

Can
2
444.3

BİR DİZİNİN BOYUTU

Bir dizinin boyutu, o dizideki eleman sayısını verir. Dizinin boyutunu bulmak için dizilerin length özelliği kullanılır.

Örnek verecek olursak :

package com.org.java;
public class Java{
  public static void main (String [] args) {
    int dizi[] = {1,2,'a',5};
    System.out.println(dizi.length);
  }
}

Ekran çıktısı :

4

DİZİLERİ KOPYALAMA

Dizideki elemanları başka bir diziye eklemek istersek bunu yapmamız gereken 2 yol vardır. İlk yöntem klasik olarak for döngüsü ile bir dizinin elemanlarını diğer diziye atarak yapılır :

package com.org.java;
public class Java{
  public static void main (String [] args) {
    int dizi1[] = new int[4];
    for (int i = 0; i < 4; i++)
      dizi1[i] = i+1;
    int dizi2[] = new int[4];
    for (int i = 0; i < 4; i++)
      dizi2[i] = dizi1[i];
  }
}

Dizi kopyalamada ki ikinci yöntem ise; System.arraycopy() metodu ile yapılır.

package com.org.diziler;
public class Diziler {
  public static void main (String [] args) {
    int dizi1[] = {1,3,5,7,9};
    int dizi2[] = new int[5];
    System.arraycopy(dizi1,0,dizi2,0,5);
  }
}

Bu metodun kullanılış şekli :

System.arraycopy(kaynak dizi, kaynak dizinin baslangiz indisi, hedef dizi, 
hedef dizinin baslangiz indisi, adedi);

DİZİLERİ SIRALAMA

Dizileri sıralamak için Arrays sınıfının sort() metodu kullanılır. Bir örnek verecek olursak :

package com.org.java;
import java.util.Arrays;
public class Java{
  public static void main (String [] args) {
    int dizi[] = {1,5,4,2,9};
    Arrays.sort(dizi);
    for (int i = 0; i < dizi.length; i++)
      System.out.println(dizi[i]);
  }
}

Ekran çıktısı :

1
2
4
5
9

DİZİLERDE ARAMA

Java’ da diziler içerisinde bir elemanı aratmak için kullanacağımız yöntem binarySearch yöntemidir.

Bu metod ile aratılan elemanın indisine ulaşılır. İndis negatif çıkar ise eleman olmadığı anlamına gelir.

package com.org.java;
import java.util.Arrays;
public class Java{
  public static void main (String [] args) {
    int dizi[] = {3,4,12,9,2,5};
    Arrays.sort(dizi);
    int deger = Arrays.binarySearch(dizi,12);
    if (deger < 0)
      System.out.println("Bulunamadı");
    else
      System.out.println("Bulundu ve indisi = " + deger);
  }
}

Ekran çıktısı :

Bulundu ve indisi = 5

DİZİLERİ KARŞILAŞTIRMAK

Dizileri karşılaştırabilmek için karşılaştıracağımız iki dizinin aynı tipte olması gerekir. Boolean, byte, char, object, int, long, short ve float tipindeki dizileri karşılaştırabiliriz. Dizileri karşılaştırmak için Arrays sınıfından equals() metodunu kullanırız.

package com.org.java;
import java.util.Arrays;
public class Java{
  public static void main (String [] args) {
    char[] dizi1 = {'y'};
    char[] dizi2 = {'d'};
    System.out.println(Arrays.equals(dizi1,dizi2));
  }
}

Ekran çıktısı :

false

ÇOK BOYUTLU DİZİLER

ÇOK BOYUTLU DİZİ TANIMLAMASI
int dizi[][] = new int[3][3];

Kaç boyutlu dizi kullanılacak ise o kadar köşeli parantez kullanılmalıdır.

ÇOK BOYUTLU DİZİ ELEMANLARINA ERİŞİM
package com.org.java;
public class Java{
  public static void main (String [] args) {
    int matris[][] = new int[][]{{3,6},{5,7}};
    System.out.println(matris[1][1]);
  }
}

Ekran çıktısı :

7
ÇOK BOYUTLU DİZİLERİ LİSTELEME
package com.org.java;
public class Java{
  public static void main (String [] args) {
    int dizi[][] = new int[3][3];
    for (int i = 0; i < 3; i++)
      for (int j = 0; j < 3; j++) {
        dizi[i][j] = i+j;
        System.out.println("Dizi ["+i+"] ["+j+"] = "+dizi[i][j]);
      }
  }
}

Ekran çıktısı :

Dizi[0][0] = 0
Dizi[0][1] = 1
Dizi[0][2] = 2
Dizi[1][0] = 1
Dizi[1][1] = 2
Dizi[1][2] = 3
Dizi[2][0] = 2
Dizi[2][1] = 3
Dizi[2][2] = 4
ÇOK BOYUTLU DİZİNİN UZUNLUĞU
package com.org.java;
public class Java{
  public static void main (String [] args) {
    int dizi[][] = {{1,2},{1,3},{1,2,5}};
    System.out.println(dizi.length);
    System.out.println(dizi[0].length);
    System.out.println(dizi[1].length);
    System.out.println(dizi[2].length);
  }
}

Ekran çıktısı :

3
2
2
3

STRİNG [] ARGS DİZİSİ

Programlarımız ilk olarak main metodu içerisinde başlar. main metodumuz ise String tipinde args adında tek boyutlu bir dizi parametre olarak alır.

Dizimizin adı önemli değildir. Herhangi bir isim verilerek parametre geçirebiliriz. Aşağıdaki gibi tanımlama yapabiliriz :

public class MainParametresi {
  public static void main (String [] dizi) {
    System.out.println("Main Metodu");
  }
}

 

Bu dizide ilk başta eleman yoktur. Eklemek için aşağıdaki yolları takip edebilirsiniz:

  1. Üstteki menüden Run‘a tıklayıp Run Configurations diyoruz. Karşımıza aşağıdaki gibi bir örnek gelecektir :
  2. Yukarıdaki pencerelerden Arguments‘e tıklıyoruz ve Program Arguments kısmına istediğimiz argümanları yazıyoruz.
  3. Daha sonra Apply diyerek penceremizi kapatıyoruz.

ARRAYS SINIFI METODLARI

ARRAYS.ASLIST METODU İLE DİZİYİ LİSTE YAPISINA KOPYALAMA
package com.org.java;

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

public class Java{
  public static void main (String [] args) {
    String dizi[] = {"Edirne","İstanbul","Lüleburgaz","Tekirdağ"};
    Integer dizi1[] = {22,34,39,59};
    List listeYapisi = new ArrayList();
    List listeYapisi1 = new ArrayList();
    listeyapisi = Arrays.asList(dizi);
    listeyapisi1 = Arrays.asList(dizi1);
    System.out.println(listeYapisi.get(1));
    System.out.println(listeYapisi);
    System.out.println(listeYapisi1.get(0));
    System.out.println(listeYapisi1);
  }
}

Ekran çıktısı :

İstanbul
[Edirne, İstanbul, Lüleburgaz, Tekirdağ]
22
[22, 34, 39, 59]
ARRAYS.COPYOF METODU İLE DİZİNİN BELLİ BÖLÜMÜNÜ KOPYALAMA
package com.org.java;

import java.util.Arrays;
public class Java{
  public static void main (String [] args) {
    char[] dizi = {'C','a','n'};
    char[] yenidizi = {};
    System.out.println("Kopyalanacak dizi : ");
    for (int i = 0; i < dizi.length; i++)
      System.out.print(dizi[i]);
    yenidizi = Arrays.copyOf(dizi,2);
    System.out.println("\n Olusan yeni dizi : ");
    for (int i = 0; i < yenidizi.length; i++)
      System.out.print(yenidizi[i]);
  }
}

Ekran çıktısı :

Kopyalanacak dizi : Can
Olusan yeni dizi : Ca
ARRAYS.COPYOFRANGE İLE İKİ İNDİS ARASINDAKİ ELEMANLARI KOPYALAMA
package com.org.java;

import java.util.Arrays;
public class Java{
  public static void main (String [] args) {
    Integer dizi[] = {14,53,19,23,20,12};
    Integer yenidizi[] = {};
    System.out.println("Kopyalanacak dizi : ");
    for (int i = 0; i < dizi.length; i++)
      System.out.print(dizi[i])
    yenidizi = Arrays.copyOfRange(dizi,2,6);
    System.out.println("\n Olusan yeni dizi : ")
    for (int i = 0; i < yenidizi.length; i++)
      System.out.print(yenidizi[i]);
  }
}

Ekran çıktısı :

Kopyalanacak dizi : 
125319232012
Yeni olusan dizi :
19232012
ARRAYS.FILL METODU İLE DİZİYE ELEMAN ATAMA

Dizimizin belirli bir bölümüne veya tamamına Arrays sınıfının Fill() metodu ile değer atayabiliriz. Bu metod, kendisine verilen değeri dizinin tüm elemanlarına veya belirttiğimiz indisler arasındaki elemanlara atar.

fill(Object array[],Object value)
fill(Object array[],int baslangic,int bitis,Object value)

Metodumuz ilk formda diziyi, parametre olarak verilen değer ile doldurur. İkinci form da ise yine parametre olarak verilen değeri, belirttiğimiz indis değerleri arasındaki bölüme yazar.