Alt 06.Şubat.2018
  #1
abulbl - ait Kullanıcı Resmi (Avatar)
Site Kurucusu
Reklam
Java Collection Framework Nedir? Framework Bileşenleri – List ve ArrayList Anlatımı

Bu yazıda 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 – 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.




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.



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.






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?




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.




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.



« önceki Konuya git | sonraki Konuya git »

Şuan bu sayfada bulunan kişiler: 1 kişi (0 üye ve 1 ziyaretçi)
 
Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok
BB kodu Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Seçenekler
Stil



Tüm Zamanlar GMT +2 Olarak Ayarlanmış. Şuanki Zaman: 13:41.

Bize Yazin - Webmaster Forumu - Arşiv - Yukarı git
Powered by vBulletin™ Version 3.8.9 Beta 1
Copyright © 2019 vBulletin Solutions, Inc. All rights reserved.
Telefon zil sesleri | Prezeci.com