Herkese merhaba. Bugün Java dilinde ArrayList ne işe yarar buna bakacağız.
Öncelikle dizilerden başlayalım. Bir dizi oluştururken dizinin boyutunu diziyi oluştururken belirtmek zorundayız. Yani dizilerin alabileceği maksimum eleman sayısı her zaman belirlidir. Bu durum diziye ne kadar eleman ekleyeceğimizi bilmediğimiz zaman sıkıntı oluyor. İşte bu sırada devreye ArrayList kavramı giriyor.
ArrayList List arayüzünden türeyen bir sınıftır. Yani şöyle; List arayüzünde yapılacak olan bütün fonksiyonlar tanımlıdır. Ekleme, silme, yazdırma gibi gibi. Bizim sorunumuz boyutu olmayan bir dizi yani boyutunu istediğimiz zaman artırabileceğimiz bir dizi istediğimiz için ArrayList sınıfını kullanacağız. Aynı zamanda List arayüzünde LinkedList, Stack, Vector de tanımlıdır.
Şimdi ArrayList tanımlamalarına bakalım.
List<Integer> list = new ArrayList<>(); ArrayList<Integer> list2 = new ArrayList<>();
Yukarıdaki iki tanımlama da doğrudur. Fakat yaygın olarak 1. kullanım kullanılır. Çünkü List arayüzünü kullanacağız. O yüzden bundan sonraki her ArrayList tanımlamalarımız 1. sıradaki gibi olacak.
Yukarıdaki tanımlamamızda List arayüzünden Integer tipinde yeni bir ArrayList oluşturduk. <> arasına listemizin tipini belirtiyoruz. Double, String gibi.
ArrayList ile aklımıza gelebilecek neredeyse her şeyi yapabiliyoruz. Ekleme, silme, istediğimiz sıraya ekleme, yazdırma, uzunluğunu alma…
Şimdi birer örnek ile hangi fonksiyonlar varmış bunlara bakalım.
List<Integer> list = new ArrayList<>(); // ArrayList olusturduk. list.add(3); // 3 sayisini ekledik. Listemiz -> 3 list.add(1, 2); // 1. index'e 2 sayisini ekledik. Listemiz -> 3 2 list.add(4); // Listemize 4 sayisini ekledik. Listemiz -> 3 2 4 System.out.println(list.size()); // Listenin o anki uzunlugunu ekrana yazdirdik. System.out.println(list.get(1)); // Listenin 1. index'indeki degeri ekrana //yazdirdik. list.remove(0); // Listenin 0. index'indeki elemanı sildik. Listemiz -> 2 4 for(int i : list) // i değişkeninin list'in her elemanını gezdiği döngü. System.out.println(i); // Ekrana i'nin değerini yazdirdik. Cunku i degiskeni //listenin her elemanini gezdigi icin sirayla listedeki her elemanin degerini aliyor. Bu liste icin dusunursek sirayla 2 ve 4 degerini alacak.
Listeyi yazdırmak için birkaç yol daha var. Hepsi aynı işi yapıyor, hangisini isterseniz kullanabilirsiniz.
for(int i = 0; i < list.size(); i++){ System.out.println(list.get(i)); } list.forEach((i) -> { System.out.println(i); }); for(int i : list){ System.out.println(i); }
Bu şekilde ArrayList ile basit işlemleri yapabiliriz. Daha fazla fonksiyonu var aslında ama temel fonksiyonları bunlar.
ArrayList’i önemli kılan bir diğer nokta ise ArrayList’i bir sınıf ile birlikte kullanabiliyoruz. Yani ArrayList’imizi oluşturduğumuz sınıfın tipinde tanımlıyoruz ve ArrayList’imiz o sınıfın değişkenlerine ve fonksiyonlarına sahip oluyor. Bir örnek ile gösterelim.
Musteriler adında bir sınıf oluşturuyoruz ve içine almak istediğimiz değişkenleri tanımlıyoruz.
public class Musteriler { private String musteriAdi; private String musteriSoyadi; private int musteriYasi; }
Tanımladıktan sonra her değişkenin Getter ve Setter fonksiyonlarını oluşturmamız lazım.
public String getMusteriAdi() { return musteriAdi; } public void setMusteriAdi(String musteriAdi) { this.musteriAdi = musteriAdi; } public String getMusteriSoyadi() { return musteriSoyadi; } public void setMusteriSoyadi(String musteriSoyadi) { this.musteriSoyadi = musteriSoyadi; } public int getMusteriYasi() { return musteriYasi; } public void setMusteriYasi(int musteriYasi) { this.musteriYasi = musteriYasi; }
Getter ve Setter’larımızı ayarladıktan sonra ise tanımlama kısmına gelelim.
List<Musteriler> list = new ArrayList<>();
Musteriler tipinde listemizi oluşturduk. Artık bu listemize oluşturduğumuz Getter ve Setter fonksiyonları ile Musteriler sınıfındaki tanımladığımız değişkenlere değer atayabiliriz. Şimdi ise bu yapının çalışma mantığına bakalım.
List<Musteriler> list = new ArrayList<>(); // Musteriler tipindeki listemizi //olusturduk. Musteriler ms = new Musteriler(); // Musteriler sinifinda islem yapacagimiz icin //bu siniftan bir nesne olusturduk. String ad = "James"; // Listemize ekleyecegimiz kisinin adi. String soyad = "Gosling"; // Listemize ekleyecegimiz kisinin soyadi. int yas = 64; // Listemize ekleyecegimiz kisinin yasi ms.setMusteriAdi(ad); // Musteriler sinifindaki musteriAdi degiskenine ad //degiskenini verdik. ms.setMusteriSoyadi(soyad); // musteriSoyadi degiskenine soyad degiskenini verdik. ms.setMusteriYasi(yas); // musteriYasi degiskenine yas degiskenini verdik. list.add(ms); // Degerlerini tanimladigimiz degiskenlerin hepsini listemize //ekledik. for(Musteriler i : list){ // Listemizi geziyoruz. Fakat burada soyle bir durum //var; integer tipindeki listemizi int i ile gezmistik. Musteriler tipindeki //listemizi ise Musteriler i ile geziyoruz. System.out.println(i.getMusteriAdi()); // i. index'deki musteriAdi System.out.println(i.getMusteriSoyadi()); // i. index'deki musteriSoyadi System.out.println(i.getMusteriYasi()); // i. index'deki musteriYasi }
Açıklama satırları çok fazla oldu fakat böyle olması gerekiyordu..:)
Birçok soruyu, problemi kolayca çözebileceğimiz ArrayList’in çalışma mantığını umarım anlamışızdır. Bana sorarsanız Java dilinde bilinmesi gereken en önemli şeylerin başını çekebilir ArrayList. Herkese iyi çalışmalar.
İlk Yorumu Siz Yapın