Özet - Özel Sıralama
Coddy'nin Java Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 46 / 87.
Görev
KolayÖzel metotlar ve sıralama hakkında öğrendiğiniz her şeyi bir araya getiren bir kitap koleksiyonu yöneticisi oluşturalım. Uygun toString(), equals(), hashCode() metotlarına ve Comparable aracılığıyla doğal sıralamaya sahip bir Book sınıfı oluşturacak, ayrıca esnek sıralama seçenekleri için harici karşılaştırıcılar ekleyeceksiniz.
Kodunuzu dört dosyaya ayıracaksınız:
Book.java: Bir kitabı temsil eden; üç private alana sahip bir sınıf oluşturun:title(String),author(String) veyear(int). Bir kurucu ve tüm alanlar için getter metotları ekleyin.Book sınıfınız,
yeardeğerine göre artan sırada (en eski önce) doğal sıralama yapmak üzereComparable<Book>arayüzünü uygulamalıdır.toString()metodunu, şu değeri döndürecek şekilde geçersiz kılın:[title] by [author] ([year])İki kitabın aynı
titleVEauthordeğerlerine sahip olduklarında eşit olması içinequals()metodunu geçersiz kılın. Aynı alanları kullanarakObjects.hash()ilehashCode()metodunu geçersiz kılın.TitleComparator.java: Kitapları başlığa göre alfabetik olarak artan sırada (A'dan Z'ye) sıralayan bir karşılaştırıcı oluşturun.AuthorComparator.java: Kitapları yazara göre alfabetik olarak artan sırada (A'dan Z'ye) sıralayan bir karşılaştırıcı oluşturun.Main.java: Her şeyi bir araya getirin! Her biri ayrı bir satırda olmak üzere üç kitap için şu formattaki girdileri alacaksınız:title,author,yearKitaplardan bir
ArrayListoluşturun ve üç sıralama yaklaşımının tümünü gösterin:- Doğal sıralamayı (yıla göre) kullanarak sıralayın ve her kitabı yazdırın
- Boş bir satır yazdırın
TitleComparatorkullanarak başlığa göre sıralayın ve her kitabı yazdırın- Boş bir satır yazdırın
AuthorComparatorkullanarak yazara göre sıralayın ve her kitabı yazdırın
Her biri şu formattaki kitap verilerini içeren üç girdi satırı alacaksınız: title,author,year
Örneğin: 1984,George Orwell,1949
Book.java dosyasına java.util.Objects, karşılaştırıcı dosyalarınıza java.util.Comparator ve Main.java dosyasına java.util.ArrayList, java.util.Collections ile java.util.Scanner içe aktarmayı unutmayın.
Kendin dene
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Girişten üç kitap oku
String line1 = scanner.nextLine();
String line2 = scanner.nextLine();
String line3 = scanner.nextLine();
// TODO: Başlık, yazar ve yılı ayıklamak için her satırı ayrıştırın
// İpucu: Değerleri ayırmak için split(",") kullanın
// TODO: Ayrıştırılan verilerden Book nesneleri oluşturun
// TODO: Bir ArrayList oluşturun ve her üç kitabı da ekleyin
// TODO: Doğal sıralama (yıla göre) kullanarak sıralayın ve her kitabı yazdırın
// TODO: Boş bir satır yazdırın
// TODO: TitleComparator kullanarak başlığa göre sıralayın ve her kitabı yazdırın
// TODO: Boş bir satır yazdırın
// TODO: AuthorComparator kullanarak yazara göre sıralayın ve her kitabı yazdırın
}
}Nesne Yönelimli Programlama bölümündeki tüm dersler
1OOP Temelleri
Harici DosyalarOOP'ye GirişSınıflar ve Nesnelerthis Anahtar KelimesiMetotlarAlanlar (Öznitelikler)Yapıcı MetotYapıcı Metot Aşırı YüklemeÖzet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtım (extends)super Anahtar KelimesiMetot Geçersiz Kılma (@Override)Yapıcı Metot ZincirlemeObject SınıfıTekli ve Çok Seviyeli KalıtımNeden Çoklu Sınıf Kalıtımı Yok?Özet - Çalışan Hiyerarşisi7Özel Metotlar ve Object Sınıfı
toString() Metoduequals() ve hashCode()clone() MetoducompareTo() ve ComparableComparator ArayüzüÖzet - Özel Sıralama2Erişim Belirleyiciler ve Kapsülleme
Erişim Seviyelerine Genel BakışGetter ve Setter MetotlarıBilgi Gizlemefinal Anahtar KelimesiÖzet - Banka Hesabı Yöneticisi5Polimorfizm
Metot Aşırı Yükleme TemelleriMetot Geçersiz Kılma (Çalışma Zamanı)Upcasting ve Downcastinginstanceof OperatörüSoyut Sınıflar ve MetotlarÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kompozisyon vs KalıtımAgregasyon vs KompozisyonDahili, Yuvalanmış ve Anonim SınıflarEnum'lar ve Enum MetotlarıRecords (Java 16+)Sealed Classes (Java 17+)11Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişSingleton KalıbıFactory KalıbıBuilder KalıbıObserver KalıbıStrategy Kalıbı14Final Meydan Okumaları
E-Öğrenme PlatformuBankacılık SistemiOyun Karakteri GeliştirmeAraç Kiralama Servisi3Sınıf Özellikleri ve Statik Üyeler
Instance ve Statik DeğişkenlerStatik MetotlarStatik BloklarSabitler (static final)Özet - Sayaç ve Utility6Arayüzler ve Soyut Sınıflar
Arayüzlere GirişArayüzleri UygulamaÇoklu Arayüz UygulamaArayüzlerde Default ve StaticSoyut Sınıflar ve ArayüzlerFonksiyonel ArayüzlerÖzet - Ödeme Sistemi9Generics
Generics'e GirişGeneric SınıflarGeneric MetotlarSınırlandırılmış Tip ParametreleriWildcard'lar (?, extends, super)Özet - Generic Container12Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit KalıbıYineleyici KalıbıKendi başına pratik yap: Online Java derleyicisi