Ö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ı.