Menu
Coddy logo textTech

Özet - Özel Sıralama

Coddy'nin Java Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 46 / 87.

challenge icon

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) ve year (int). Bir kurucu ve tüm alanlar için getter metotları ekleyin.

    Book sınıfınız, year değerine göre artan sırada (en eski önce) doğal sıralama yapmak üzere Comparable<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ı title VE author değerlerine sahip olduklarında eşit olması için equals() metodunu geçersiz kılın. Aynı alanları kullanarak Objects.hash() ile hashCode() 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,year

    Kitaplardan bir ArrayList oluşturun ve üç sıralama yaklaşımının tümünü gösterin:

    1. Doğal sıralamayı (yıla göre) kullanarak sıralayın ve her kitabı yazdırın
    2. Boş bir satır yazdırın
    3. TitleComparator kullanarak başlığa göre sıralayın ve her kitabı yazdırın
    4. Boş bir satır yazdırın
    5. AuthorComparator kullanarak 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

Kendi başına pratik yap: Online Java derleyicisi