Örneklerle Java'da Karşılaştırıcı Arayüzü Nedir?

Orneklerle Java Da Karsilastirici Arayuzu Nedir



Java'da Comparator arabirimi, bir nesne koleksiyonunu sıralamak için kullanılabilecek bir karşılaştırma işlevini tanımlamak için kullanılır. Doğal sıralamaya dayalı varsayılan karşılaştırma yerine özel ölçütlere göre nesnelerin sıralanmasına izin verir. İşlevleri ihtiyaca göre özelleştirmek için çeşitli uygulamalara sahiptir. Bu makale, Karşılaştırıcı arayüzünü Java'daki sayısız örnekle birlikte açıklayacaktır.

Örneklerle Java'da Karşılaştırıcı Arayüzü Nedir?

Karşılaştırıcı arabirimi, Compare() ve equals() yöntemlerini içerir. İlk yöntem, bir tamsayı değeri döndürerek iki nesneyi hesaplamak için kullanılır. Diğer yöntem, eşitlik için iki karşılaştırıcı nesneyi hesaplamak için kullanılır.

Java'da Comparator arayüzünün nasıl kullanılacağına dair farklı örnekler:







Örnek 1: Bir Listeyi Uzunluğa Göre Sıralama

Bu örnekte, dizelerin bir listesi dikkate alınır ve bunları alfabetik sıra yerine uzunluklarına göre sıralar:



içe aktarmak java.util.ArrayList ;

içe aktarmak java.util.Koleksiyonlar ;

içe aktarmak java.util.Comparator ;

içe aktarmak java.util.List ;

halk sınıf Ana {

halk statik geçersiz ana ( Sicim [ ] argümanlar ) {

Liste < Sicim > liste = yeni Dizi Listesi <> ( ) ;

liste. eklemek ( 'John' ) ;

liste. eklemek ( 'Bob' ) ;

liste. eklemek ( 'Alice' ) ;

Koleksiyonlar . düzenlemek ( liste ) ;

sistem . dışarı . yazdır ( liste ) ;

Koleksiyonlar . düzenlemek ( liste, yeni StringLengthComparator ( ) ) ;

sistem . dışarı . yazdır ( liste ) ;

}

} // Bir sınıf tanımlandı

sınıf StringLengthComparator uygular karşılaştırıcı < Sicim > {

halk int karşılaştırmak ( Sicim s1, Sicim s2 ) {

geri dönmek tamsayı . karşılaştırmak ( s1. uzunluk ( ) s2. uzunluk ( ) ) ;

}

}

Yukarıdaki kodun açıklaması aşağıda verilmiştir:



  • Öncelikle, Comparator arabirimini uygulayan StringLengthComparator adlı özel bir Comparator sınıfı oluşturun.
  • İki dizgenin uzunluğunu karşılaştırmak için Compare() yöntemini geçersiz kılar.
  • Sonunda, özel karşılaştırıcımızı kullanarak listeyi sıralamak için the.sort() yöntemine bir örnek iletin.

Çıktı





İlk çıktı, listeyi doğal sıralama kullanarak sıralamanın sonucudur, ikinci çıktı ise her dizenin uzunluğuna göre özel karşılaştırıcımızı kullanarak listeyi sıralamanın sonucudur.



Örnek 2: Nesneleri Belirli Bir Alana Göre Sıralama

Başka bir örnek, nesneleri belirli bir alana göre sıralamak için yapılır. Karşılaştırıcı arabirimi bunu başarmak için kullanılır:

içe aktarmak java.util.ArrayList ;

içe aktarmak java.util.Koleksiyonlar ;

içe aktarmak java.util.Comparator ;

içe aktarmak java.util.List ;

halk sınıf Ana {

halk statik geçersiz ana ( Sicim [ ] argümanlar ) {

Liste < Kişi > kişiler = yeni Dizi Listesi <> ( ) ; // İsim, yaş ve maaş atayın

kişiler. eklemek ( yeni Kişi ( 'Alice' , 25 , 50000 ) ) ;

kişiler. eklemek ( yeni Kişi ( 'Bob' , 30 , 75000 ) ) ;

kişiler. eklemek ( yeni Kişi ( 'Charlie' , yirmi , 40000 ) ) ;

karşılaştırıcı < Kişi > maaşKarşılaştırıcı = yeni karşılaştırıcı < Kişi > ( ) {

// Kişileri maaşa göre sırala

halk int karşılaştırmak ( Kişi p1, Kişi p2 ) {

geri dönmek tamsayı . karşılaştırmak ( p2. maaş al ( ) , sayfa1. maaş al ( ) ) ;

}

} ;

Koleksiyonlar . düzenlemek ( kişiler, maaşKarşılaştırıcı ) ; geri dönmek sıralama değerleri

// Sıralanmış bir kişi listesi yazdır

için ( kişi kişi : kişiler ) {

sistem . dışarı . yazdır ( kişi ) ;

}

}

}

sınıf Kişi { // Adı, yaşı ve maaşı tanımlayın

özel Sicim isim ; // bir sınıf içinde kapsam
özel int yaş ;
özel int maaş ;

halk Kişi ( Sicim isim, int yaş, int maaş ) {
Bu . isim = isim ;
Bu . yaş = yaş ;
Bu . maaş = maaş ;
}
halk Sicim getName ( ) {
geri dönmek isim ;
}
halk int yaş almak ( ) {
geri dönmek yaş ;
}
halk int maaş al ( ) {
geri dönmek maaş ;
}
halk Sicim toString ( ) {
geri dönmek isim + ' (yaş ' + yaş + ', maaş $' + maaş + ')' ;
}
}

Kodun açıklaması aşağıda verilmiştir:

  • “adlı bir sınıf Kişi ” üç alanla: “ isim ”, “ yaş ', Ve ' maaş ' düşünülmektedir.
  • Bundan sonra, maaşlarına bağlı olarak bir Kişi nesneleri koleksiyonunu azalan düzende sıralayın.

Çıktı

Çıktı, maaşların azalan düzene göre sıralandığını gösterir.

Çözüm

Java'da Comparator arabirimi, kullanıcıların nesneleri özel ölçütlere göre sıralamasını sağlayan güçlü bir araçtır. Compare() yöntemini geçersiz kılar, kullanıcılar kendi karşılaştırma işlevlerini tanımlayabilir ve bunu nesne koleksiyonlarını çeşitli şekillerde sıralamak için kullanabilir. Bu makale, Karşılaştırıcı arayüzünü Java'daki pratik örneklerle birlikte açıkladı.