Java Collections Comparable ve Comparator Interfaceleri

Merhaba arkadaşlar bu yazım javadaki çok önemli bir framework olan collections framework’üne ait Comparable ve Comparator interfacesinden bahsedeceğim.

Comprable Interface ?

Comparable interface si genellikle bazı özel oluşturulan nesnelerden yapılan dizilerin sıralanmasında kullanılır. Ne demek istedim. ??? mesela “Kisi.java” diye  bir nesneniz var ve Bu nesneden oluşan bir listeniz var ve isimlere  göre  sıralamak istiyorsunuz ? Normalde

Bu liste özel bir nesneden oluşturulmuş liste değil benim kastettiğim şunun gibi bir liste

 

İşte bu örnekte ben eğer bu özel sınıfıma Comparable<T> interfacesini implemente edersem override etmem gereken bir metod oluşacak ve bu metodun içinde eğer string bir ifade karşılaştıracaksam “compareTo()” metodunu kullanarak , yok eğer sayısal bir ifade karşılaştıracaksam bir if yapısı kurarak 1,0,-1 gibi bir integer dönüş vermem gerekiyor.

sonrasında

dediğimde aile dizisini benim “compareTo” metodunda belirttiğim parametreye göre sıralama yapacak.

String sınıfına ait compareTo metodunu merak edenler için bu linkden faydalanabilirler tıklayın

Şimdi Gelelim Comparator interface’sine

Comparator Interface ?

Yukarıda özel bir sınıfın belirli bir alanına göre sıralama yapmayı gördük.  Peki bu sınıfdan oluşturulan listeyi birden fazla alana göre sıralamak yapmak istersek ne olacak ? Hani dedik ya  override ettiğim “compareTo” metodunda belirttiğim metoda göre sıralama yapacak diye. Ben istiyorum ki benim istediğim zaman farklı alanlara göre de sıralama yapsın işte burada Comparator<T> interfacesini kullanmak zamanı gelmiş oluyor .

devam edelim…

bakın iki adet sınıf oluşturdum ve biri isme göre biri yaşa göre sıralama yapacak . Haydi şimdi bunları Main.java da kullanalım

işte bu şekilde Comparator<T> interfacesinin de nasıl kullanıldığını görmüş olduk. 

Map ınterfacesi ile yapılmış bir örnek daha ekleyelim

 

 

 

 

 

Şimdi bu örnekte bir detaydan bahsetmek istiyorum olur ya bazı takımların puanları aynı olabilir  böyle bir durum olursa puanları aynı olanları da baş harflerine göre sıralayalım.

 

 

 

 

Şeklinde durumu çözebiliriz. 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir