1. Ana Sayfa
  2. Java
  3. Java Collection Framework Nedir? Framework Bileşenleri – List ve ArrayList Anlatımı

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

Bu makale 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 sınıf tanımları ve toString metodlarına değinilmiştir.

Framework 2 – ,

Ö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ı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

www.mshowto.org

Yorum Yap

Yazar Hakkında

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.

Yorum Yap

Yorumlar (1)