Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.Comparator;
- import java.util.List;
- import java.util.Scanner;
- import java.util.Set;
- import java.util.TreeSet;
- import java.util.stream.Collectors;
- public class BooksTest {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- int n = scanner.nextInt();
- scanner.nextLine();
- BookCollection booksCollection = new BookCollection();
- Set<String> categories = fillCollection(scanner, booksCollection);
- System.out.println("=== PRINT BY CATEGORY ===");
- for (String category : categories) {
- System.out.println("CATEGORY: " + category);
- booksCollection.printByCategory(category);
- }
- System.out.println("=== TOP N BY PRICE ===");
- print(booksCollection.getCheapestN(n));
- }
- static void print(List<Book> books) {
- for (Book book : books) {
- System.out.println(book);
- }
- }
- static TreeSet<String> fillCollection(Scanner scanner,
- BookCollection collection) {
- TreeSet<String> categories = new TreeSet<String>();
- while (scanner.hasNext()) {
- String line = scanner.nextLine();
- String[] parts = line.split(":");
- Book book = new Book(parts[0], parts[1], Float.parseFloat(parts[2]));
- collection.addBook(book);
- categories.add(parts[1]);
- }
- return categories;
- }
- }
- class Book {
- String naslov;
- String kategorija;
- float cena;
- static Comparator<Book> poNasloviCena = Comparator.comparing(Book::getNaslov).thenComparing(Book::getCena);
- static Comparator<Book> poCenaiNaslov = Comparator.comparing(Book::getCena).thenComparing(Book::getNaslov);
- public Book(String naslov, String kategorija, float cena) {
- this.naslov = naslov;
- this.kategorija = kategorija;
- this.cena = cena;
- }
- public String getNaslov() {
- return naslov;
- }
- public float getCena() {
- return cena;
- }
- public String getKategorija() {
- return kategorija;
- }
- @Override
- public String toString() {
- return naslov + " (" + kategorija + ") "
- + String.format("%.2f", cena);
- }
- }
- class BookCollection{
- List<Book> knigi;
- public BookCollection() {
- knigi = new ArrayList<>();
- }
- public void addBook(Book book){
- knigi.add(book);
- }
- public void printByCategory(String category){
- knigi.stream().filter(t -> t.getKategorija().equals(category)).sorted(Book.poNasloviCena).forEach(System.out::println);
- }
- public List<Book> getCheapestN(int n){
- return knigi.stream().limit(n).sorted(Book.poCenaiNaslov).collect(Collectors.toList());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment