Menu
Coddy logo textTech

Podsumowanie — własne sortowanie

Część sekcji Programowanie obiektowe ścieżki Java w Coddy. Lekcja 46 z 87.

challenge icon

Wyzwanie

Łatwy

Stwórzmy menedżer kolekcji książek, który łączy wszystko, czego nauczyłeś się o metodach specjalnych i sortowaniu. Utworzysz klasę Book z odpowiednimi metodami toString(), equals(), hashCode() oraz naturalnym porządkiem określonym przez Comparable, a także zewnętrznymi komparatorami umożliwiającymi elastyczne sortowanie.

Podzielisz swój kod na cztery pliki:

  • Book.java: Utwórz klasę reprezentującą książkę z trzema prywatnymi polami: title (String), author (String) i year (int). Dodaj konstruktor i metody pobierające wartości wszystkich pól.

    Twoja klasa Book powinna implementować Comparable<Book> z naturalnym porządkiem według year w kolejności rosnącej (najpierw najstarsze książki).

    Nadpisz toString(), aby zwracała: [title] by [author] ([year])

    Nadpisz equals(), aby dwie książki były równe, gdy mają taki sam title ORAZ author. Nadpisz hashCode(), używając Objects.hash() z tymi samymi polami.

  • TitleComparator.java: Utwórz komparator, który sortuje książki alfabetycznie według tytułu w kolejności rosnącej (od A do Z).
  • AuthorComparator.java: Utwórz komparator, który sortuje książki alfabetycznie według autora w kolejności rosnącej (od A do Z).
  • Main.java: Połącz wszystko w całość! Otrzymasz dane wejściowe dla trzech książek, każdą w osobnym wierszu, w formacie: title,author,year

    Utwórz ArrayList książek i zaprezentuj wszystkie trzy sposoby sortowania:

    1. Posortuj według naturalnego porządku (według roku) i wypisz każdą książkę
    2. Wypisz pusty wiersz
    3. Posortuj według tytułu, używając TitleComparator, i wypisz każdą książkę
    4. Wypisz pusty wiersz
    5. Posortuj według autora, używając AuthorComparator, i wypisz każdą książkę

Otrzymasz trzy wiersze danych wejściowych, z których każdy zawiera dane książki w formacie: title,author,year

Na przykład: 1984,George Orwell,1949

Pamiętaj, aby zaimportować java.util.Objects w pliku Book.java, java.util.Comparator w plikach komparatorów oraz java.util.ArrayList, java.util.Collections i java.util.Scanner w pliku Main.java.

Spróbuj swoich sił

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);
        
        // Wczytaj trzy książki z danych wejściowych
        String line1 = scanner.nextLine();
        String line2 = scanner.nextLine();
        String line3 = scanner.nextLine();
        
        // TODO: Przeanalizuj każdą linię, aby wyodrębnić tytuł, autora i rok
        // Wskazówka: Użyj split(",") do rozdzielenia wartości
        
        // TODO: Utwórz obiekty Book na podstawie przeanalizowanych danych
        
        // TODO: Utwórz ArrayList i dodaj do niej wszystkie trzy książki
        
        // TODO: Posortuj według naturalnego porządku (według roku) i wypisz każdą książkę
        
        // TODO: Wypisz pustą linię
        
        // TODO: Posortuj według tytułu za pomocą TitleComparator i wypisz każdą książkę
        
        // TODO: Wypisz pustą linię
        
        // TODO: Posortuj według autora za pomocą AuthorComparator i wypisz każdą książkę
    }
}

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Java online