1. Anasayfa
  2. Java

Java Collection Framework Nedir? Framework Bileşenleri – List ve ArrayList Anlatımı


1

Bu makale Java Collection Framework yazı dizisinin ikinci bölümüdür. Bu yazının ilk bölümüne buraya tıklayarak ulaşabilirsiniz. Bu bölümde liste kullanımına bir giriş yapılmaktadır. Listelenecek sınıflar tanımlanıp bir liste oluşturulmakta ve listedeki veriler rasgele karıştırılmaktadır. Ayrıca Enum sınıf tanımları ve toString metodlarına değinilmiştir.

Java Collection Framework 2 – List, ArrayList

Önceki yazıda Java Collection Framework genel hatlarıyla tanıtılmıştı. Bu yazıda List interface’i ve ArrayList sınıfları kullanarak listelere bir giriş yapacağız.

Listede Ne Olacak?

List sınıfları nesneleri sıralı bir şekilde tutar demiştik. Öncelikle listeleyecek bir nesne bulalım. Aslında String sınıfıyla kolayca liste sınıflarını deneyebiliriz fakat gerçek dünyada bundan biraz daha karmaşık durumlar karşımıza çıkar. Bu nedenle örnek olarak bir iskambil destesi yapacağız. Listelemek istediğimiz nesne iskambil kartı olacak. İskambil kartları 2 değerle tanımlanır. Kartın rengi (sinek, karo, kupa, maça) ve kartın değeri (2,3,4,5,6,7,8,9,10,J,Q,K,A). Böyle bir kart sınıfı aşağıdaki gibi tanımlanabilir.


Resim-1

Card sınıfında kart rengi (suit) ve kart değeri (rank) belirli değerlerin dışında değer alamadıklarından Enum olarak tanımlanmalıdır. Bu şekilde bir kart nesnesinin yanlış bir renk ya da değer içermesi önlenmiş olur. Suit ve Rank Enum’ları aşağıdaki gibi tanımlanabilir.


Resim-2

Card sınıfı Suit ve Rank parametreleri alan bir tek yapıcı (constructor) metoduna sahiptir. Bu şekilde bir Card nesnesinin mutlaka renk ve değerinin olması garantilenir. Ayrıca Suit ve Rank için sadece getter metodları tanımlanmıştır. Setter metodları yoktur. Bu şekilde Card nesnesinin renk ve değerinin gerçek Dünyada olduğu gibi değiştirilememesi de garantilenmiş olur.

Card sınıfında ayrıca kartın bilgilerini ekrana basabilmek için toString metodunu override ediyoruz.

Listeyi Oluşturmak

Şimdi Card nesnesini kullanarak bir deste oluşturalım. Bir destede kartlar sıralı bir şekilde durur. Bu yüzden deste bir List olacak. Destemize 52 adet farklı renk ve değerde Card nesnesi yaratıp koymamız gerekiyor. Enum sınıfları sınıfın tüm değerlerini dizi olarak döndüren values() metoduna sahiptir. Suit ve Rank Enum değerlerini içeren dizilere bu metot vasıtasıyla erişerek iç içe 2 for döngüsü kurabiliriz. Döngü içerisinde her bir suit ve rank değeri için Card nesnesi yaratılır ve desteye eklenir. Bunun için deck nesnesinin add metodu kullanılır. Son olarak deck listesini ekrana bastığımızda 52 adet kartın oluştuğunu görebiliriz.


Resim-3


Resim-4

Biraz Java; Enum Sınıfını Özelleştirmek.

Bu noktada biraz konu dışına çıkıp Java’nın inceliklerinden bahsedelim. Desteyi ekrana bastığımızda bir sürü aşina olmadığımız yazıyla karşılaşıyoruz. Dikkatli incelersek her bir kart nesnesi için Suit Enum değeri ve Rank Enum değerinin String olarak ekrana basıldığını görüyoruz. Örneğin Sinek ikilisi ekrana {CLUBS, TWO} şeklinde basılıyor. Peki iskambil kartlarını aşina olduğumuz bir şekilde aşağıdaki gibi görmek istersek ne yapmalıyız?


Resim-5

Deste içerisindeki her bir Card nesnesi ekrana basılırken nesnenin Suit ve Rank Enum değerleri ekrana basılıyor demiştik. Bunu değiştirmek için Enum sınıflarında toString metodunu override ederek ekranda Enum değeri yerine istediğimiz bir String bastırabailiriz. Enum sınıfları özel sınıflardır ve sadece private tipinde yapıcı fonksiyonları olabilir. Her bir Enum değeri için bu yapıcı fonksiyon çağrılarak farklı değerler için istenilen semboller tanımlanabilir. toString metodunda bu semboller döndürülerek istenilen sonuca erişilir. Bu şekilde Suit kodu aşağıdaki gibi olur. Rank Enum sınıfı ise size bırakıldı. Çözümü bir sonraki yazıda. Ayrıca Card sınıfının toString metodunun dönüş değeri return “” + suit + rank; şeklinde değiştirilerek ilk ekran çıktısındaki süslü parantezlerden de kurtuluruz. Bu şekilde istenildiği gibi desteyi ekrana basabilmiş oluyoruz.


Resim-6

Listeyi Karıştırmak

Elimizde bir iskambil destesi tuttuğumuzda yapacağımız ilk şey genelde desteyi karıştırmak olur. Oluşturduğumuz desteyi karıştırarak yazının bu bölümünü sonlandıralım. Desteyi karıştırmak liste içerisindeki kartların yerini rastgele olacak şekilde değiştirmekten ibarettir. Bunu yapmak için iç içe for döngüleri, rastgele sayı üreteçleri vesaire kullanabiliriz. Fakat Amerika’yı yeniden keşfetmeye gerek yok. Collection Framework’ünün shuffle metodu tam da bu işi yapar. Bir liste içerisindeki değerler rastgele olacak şekilde yer değiştirir. Destemizi aşağıdaki gibi karıştırıp şöyle bir ekran çıktısı alabiliriz.


Resim-7

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

Bu İçeriğe Tepkin Ne Oldu?
  • 0
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Lisans eğitimini Yıldız Teknik Üniversitesi Elektronik ve Haberleşme Mühendisliğinde tamamladı. İTÜ Biyomedikal Mühendisliğinden ve Bahçeşehir Üniversitesi Mühendislik Yönetiminden Yüksek Lisans derecelerini aldı. Telekominikasyon sektörünün öncü firmalarından Netaş’da yazılım mimarı olarak çalışmaktadır. Okan Üniversitesinde 2 yıl Java’ya Giriş ve Dağıtık Yazılım Uygulamaları derslerini verdi.

Yazarın Profili

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Yorumlar (1)

    Bir yanıt yazın

    E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir