MarkoS2900

Books collection

Jan 22nd, 2021
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.86 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. import java.util.Comparator;
  4. import java.util.List;
  5. import java.util.Scanner;
  6. import java.util.Set;
  7. import java.util.TreeSet;
  8. import java.util.stream.Collectors;
  9.  
  10. public class BooksTest {
  11.     public static void main(String[] args) {
  12.         Scanner scanner = new Scanner(System.in);
  13.         int n = scanner.nextInt();
  14.         scanner.nextLine();
  15.         BookCollection booksCollection = new BookCollection();
  16.         Set<String> categories = fillCollection(scanner, booksCollection);
  17.         System.out.println("=== PRINT BY CATEGORY ===");
  18.         for (String category : categories) {
  19.             System.out.println("CATEGORY: " + category);
  20.             booksCollection.printByCategory(category);
  21.         }
  22.         System.out.println("=== TOP N BY PRICE ===");
  23.         print(booksCollection.getCheapestN(n));
  24.     }
  25.  
  26.     static void print(List<Book> books) {
  27.         for (Book book : books) {
  28.             System.out.println(book);
  29.         }
  30.     }
  31.  
  32.     static TreeSet<String> fillCollection(Scanner scanner,
  33.                                           BookCollection collection) {
  34.         TreeSet<String> categories = new TreeSet<String>();
  35.         while (scanner.hasNext()) {
  36.             String line = scanner.nextLine();
  37.             String[] parts = line.split(":");
  38.             Book book = new Book(parts[0], parts[1], Float.parseFloat(parts[2]));
  39.             collection.addBook(book);
  40.             categories.add(parts[1]);
  41.         }
  42.         return categories;
  43.     }
  44. }
  45.  
  46. class Book {
  47.     String naslov;
  48.     String kategorija;
  49.     float cena;
  50.  
  51.     static Comparator<Book> poNasloviCena = Comparator.comparing(Book::getNaslov).thenComparing(Book::getCena);
  52.     static Comparator<Book> poCenaiNaslov = Comparator.comparing(Book::getCena).thenComparing(Book::getNaslov);
  53.     public Book(String naslov, String kategorija, float cena) {
  54.         this.naslov = naslov;
  55.         this.kategorija = kategorija;
  56.         this.cena = cena;
  57.     }
  58.  
  59.     public String getNaslov() {
  60.         return naslov;
  61.     }
  62.  
  63.     public float getCena() {
  64.         return cena;
  65.     }
  66.  
  67.     public String getKategorija() {
  68.         return kategorija;
  69.     }
  70.     @Override
  71.     public String toString() {
  72.         return naslov + " (" + kategorija + ") "
  73.                 + String.format("%.2f", cena);
  74.     }
  75. }
  76. class BookCollection{
  77.     List<Book> knigi;
  78.  
  79.     public BookCollection() {
  80.         knigi = new ArrayList<>();
  81.     }
  82.     public void addBook(Book book){
  83.         knigi.add(book);
  84.     }
  85.     public void printByCategory(String category){
  86.         knigi.stream().filter(t -> t.getKategorija().equals(category)).sorted(Book.poNasloviCena).forEach(System.out::println);
  87.     }
  88.     public List<Book> getCheapestN(int n){
  89.         return knigi.stream().limit(n).sorted(Book.poCenaiNaslov).collect(Collectors.toList());
  90.     }
  91. }
Advertisement
Add Comment
Please, Sign In to add comment