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ının yanı sıra, esnek sıralama seçenekleri için harici karşılaştırıcılar (comparators) oluşturacaksınız.

Kodunuzu dört dosya halinde düzenleyeceksiniz:

  • Book.java: Üç özel (private) alana sahip bir kitabı temsil eden bir sınıf oluşturun: title (String), author (String) ve year (int). Bir yapıcı (constructor) ve tüm alanlar için getter metotlarını ekleyin.

    Book sınıfınız, year alanına göre artan düzende (en eskiden en yeniye) doğal sıralama ile Comparable<Book> arayüzünü uygulamalıdır.

    toString() metodunu şu formatı döndürecek şekilde geçersiz kılın (override): [title] by [author] ([year])

    equals() metodunu, iki kitabın aynı title VE author değerine sahip olduklarında eşit sayılacakları şekilde geçersiz kılın. hashCode() metodunu aynı alanları kullanarak Objects.hash() ile geçersiz kılın.

  • TitleComparator.java: Kitapları başlığa göre alfabetik olarak artan düzende (A'dan Z'ye) sıralayan bir karşılaştırıcı oluşturun.
  • AuthorComparator.java: Kitapları yazara göre alfabetik olarak artan düzende (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 title,author,year formatında olmak üzere üç kitap için girdi alacaksınız.

    Kitaplardan oluşan bir ArrayList oluşturun ve her üç sıralama yaklaşımını da 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 formatta kitap verisi içeren üç satır girdi alacaksınız: title,author,year

Örneğin: 1984,George Orwell,1949

Book.java dosyasında java.util.Objects, karşılaştırıcı dosyalarınızda java.util.Comparator ve Main.java dosyasında java.util.ArrayList, java.util.Collections ve java.util.Scanner sınıflarını içe aktarmayı (import) 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