S.a. Arkadaşlar,
Bugünkü konumuz ArrayList olacak. Dizileri hepimiz biliyoruzdur. Dizilerde ne yapıyorduk eleman tutuyorduk,siliyorduk vs fakat burada bir diziye tek bir tip değişken atayabiliyorduk. Mesela int[] a= new int[size]; diyorduk ve sadece intenger tanımlayabiliyorduk. Fakat arraylistlerde farklı tipleri tanımlama olanağı sağlar fakat siz bunu istemezseniz jenerikler ile de kısıtlama yapabiliyorsunuz. Jenerik konusunu ileri ki konularda anlatacağız inşallah, fakat bir nevi tip kısıtlaması dersek şuan için bize yeterli olacağını düşünüyorum. Ayrıca arraylistler dinamik yapılardır. Eleman ekledikçe genişleyen sildikçe küçülen yapılardır. Dizilerde sabit bir boyut veriyorduk bildiğiniz gibi ve bundan fazla eleman ekleme şansımız olmuyordu. Daha az eleman eklediğimizde ise boşuna bellekte yer tutmuş oluyoruz. ArrayListlerin böyle bir avantajı da var. Son olarak eleman silme gibi işlemler veya araya eleman ekleme gibi konularında diziler için ekstra kod yazmanız gerekirken ArrayListler bunu kendisi hallediyor ve size bir zorluk çıkarmıyor. Sayılar ve String için sıralama yapabiliyor, fakat farklı objeler için sıralama yapamıyor. Mesela bir Car sınıfımız var , onun için farklı yöntemler var onları da ileride nasip olursa anlatırız. Şimdilik teknik olarak söyleyeceklerimiz bunlar. Kodlar içerisinde eksik gördüğümüz yerleri yine anlatmaya çalışacağız. Şimdi yavaştan kod kısmına geçelim.
public static void main(String[] args) {
ArrayList myArrayList = new ArrayList();
// ArrayList'e elemani add metodu ile ekleyebiliriz.
myArrayList.add(10);
myArrayList.add((short)20);
myArrayList.add("test");
myArrayList.add(true);
myArrayList.add(new Test());//paketismi+sıfınismi+@id
myArrayList.set(2, "new set text");//set ile indexteki elemani override
myArrayList.add(1, '#');//overload ile yeni eleman ekleyebiliriz
//set ile farkı elemanı üzerine yazılmaz, elemanı aşağı kaydırır.
for (Object obje: myArrayList) {
System.out.println(obje);
}
boolean isEmpty = myArrayList.isEmpty();//ArrayList Boş mu,boşsa true
int size = myArrayList.size(); // kaç elemanlı
System.out.println(isEmpty + " Eleman Sayısı: " + size);
boolean b= myArrayList.contains(20);//burada int olduğu için false
boolean b2= myArrayList.contains((short)20); //short olduğundan true
boolean b3= myArrayList.contains("10"); //yukarıda int burada String!
System.out.println(b+ " " + b2+ " " + b3);
int indexOf = myArrayList.indexOf(10); //indexini atar
int indexOf2 = myArrayList.indexOf(20); //int olduğundan -1 döndürür
int indexOf3 = myArrayList.indexOf((short)20);
System.out.println(indexOf + " " + indexOf2 + " " + indexOf3);
myArrayList.remove(0); //index siler
System.out.println("0.eleman Silindikten Sonra:" + myArrayList.size());
myArrayList.clear(); //tüm arraylisti siler
System.out.println("Dizi tamamen silinince" + myArrayList.size());
//şimdi diziyi tekrar yazdıralım,görüldüğü üzere birşey yazmaz
for (Object obje: myArrayList) {
System.out.println(obje);
}
}
Peki biz array ile arrayList arasında herhangi bir dönüşüm yapabilir miyiz diye bir soru sorarsak onun da cevabı evet olacak. Her iki dönüşüme de izin veriyor. Bunun için birden fazla yol olabilir fakat biz kendiliğinden gelen toArray ve asListleri kullanacağız. Bu iki yöntem arasında farklar vardır. Bunları burada söylemektense kod içerisinde uygularken yorum satırlarıyla desteklemeyi tercih edelim.
public static void main(String[] args) {
String[] namesArray = { "names1", "names2", "names3", "names4" };
List namesList = Arrays.asList(namesArray);
// Arrays -> List dönüşümü yapıyoruz
for (String str : namesArray) {
System.out.print(str + " ");
}
// List'teki elemani guncellersek otomatik olarak
//dizi arraydeki eleman da guncellenecektir.
//fakat toArray ile güncellenme olmayacaktır
namesList.set(0, "set new names1");
System.out.println("");
for (String str : namesArray) {
System.out.print(str + " ");
}
// namesList.add("java.lang.UnsupportedOperationException");
//bu şekilde eleman eklemeyiz fakat to Array bu böyle değildir
}
NOT: adList ile toArray görev olarak aynı olsa dahi özellik olarak birbirlerinin tersi gibidirler. Kodun içinde gerekli açıklamaları yapmaya özen gösterdik. Yazımızı burada son veriyor , iyi çalışmalar diliyoruz.
array etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
array etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
22 Ocak 2015 Perşembe
22 Aralık 2014 Pazartesi
Diziler
Bugünkü
yazımızda dizileri ele alacağız. Dizilerin bu işle ilgilenen herkes az çok
nedir, neden kullanılır gibisinden bir şeyler biliyordur. Biz de hem
bildiklerimizi bir gözden geçirmek hem de birkaç ince noktasını gözden geçirmek
istiyoruz.
Peki
nasıl tanımlanır bu diziler diye bir bakalım
int[] dizi veya int dizi[] olarak
tanımlayabiliriz fakat bu işin standardı olarak görülen ilk tanımlamadır, fakat
ikinci tanımlama da hata vermez.
int[] dizi= new int[10]; burada
dizimizin boyutunu belirlemiş oluyoruz. 10’dan fazla değer girdiğimizde
derleyici bize hata verecektir. Peki 2 boyutlu bir dizi tanımlamak istersek ne
yapmamız gerekecek. Hemen onu da kodlayalım.
String[][] dizi= new
String[10][]; burada String dizisi oluşturduk 2 boyutlu olarak , eğer 2den
fazla oluşturmak istersek sağına ve soluna eşit sayılarda köşeli parantezler
ekliyoruz. Şimdi biraz daha 2 boyutlu diziyle ilgili bir şey söyleyelim. Aşağıdaki
kodu incelerken yanına not edelim söyleyeceklerimizi.
int [][]
myArray = new int[3][];
myArray[0]
= new int[3]; // 0.nci elemana 3 elemanlı bir dizi atıyoruz
myArray[0][0] = 6;
myArray[0][1] = 7;
//myArray[0][2]
= 0; burada tanımlanadığımız halde otomatik 0 olur
myArray[1]
= new int[3];
myArray[1][0] = 9;
myArray[1][1] = 8;
myArray[1][2]
= 5;
myArray[2]=new
int[3]; //3 satırdaki tüm elemanlar sıfır olacak
for(int
i=0; i<2;i++){
for(int j=0; j<3;j++){
System.out.print(" "+myArray[i][j]);
}
System.out.println("");
}
Çıktı:
6 7 0
9 8 5
0 0 0
Son olarak da dizinin başlangıçta
değer nasıl atanır ona bakıp dizi yazımıza son verelim. Onu da şu şekilde
yapabiliriz.
int [] ages2= new int[]{20,30,40,50}; // değerleri burada
girdiğimiz zaman dizinin boyutuna herhangi bir değer girmiyoruz, yoksa
derleyici hata verecektir.
int [] ages2= new int[4]{20,30,40,50}; //error
Peki bu dizi birden fazla boyutlu olursa nasıl tanımlama
yapacağız
int[][] scores = { 2, 4, 5 }, { 10, 20, 3, 9 }, { 4 }, {} };
// dikkat ettiyseniz burda new int[] gibi bir tanımlama yok, yani bunu koymak
opsiyonel birşeydir. Seçeneğe bağlı. New [][] koysak da olur, derleyici hata
vermeyecektir.
Kaydol:
Kayıtlar (Atom)