/* package whatever; // don't place package name! */
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
class Coffee {
private double pricePerKg;
private double volumePerKg;
public Coffee
(String name,
double pricePerKg,
double volumePerKg
) { this.name = name;
this.pricePerKg = pricePerKg;
this.volumePerKg = volumePerKg;
}
return name;
}
public double getPricePerKg() {
return pricePerKg;
}
public double getVolumePerKg() {
return volumePerKg;
}
}
class CoffeeVan {
private double capacity;
private List<Coffee> coffees;
public CoffeeVan(double capacity) {
this.capacity = capacity;
this.coffees = new ArrayList<>();
}
public void addCoffee(Coffee coffee, double quantity) {
coffees.add(coffee);
}
public void sortCoffeesByValue() {
coffees.
sort(Comparator.
comparingDouble((Coffee c
) -> c.
getPricePerKg() / c.
getVolumePerKg()).
reversed()); }
public List<Coffee> findCoffeeByQuality(double minPricePerKg, double maxPricePerKg, double minVolumePerKg, double maxVolumePerKg) {
List<Coffee> result = new ArrayList<>();
for (Coffee coffee : coffees) {
if (coffee.getPricePerKg() >= minPricePerKg && coffee.getPricePerKg() <= maxPricePerKg &&
coffee.getVolumePerKg() >= minVolumePerKg && coffee.getVolumePerKg() <= maxVolumePerKg) {
result.add(coffee);
}
}
return result;
}
}
public class Main {
public static void main
(String[] args
) { Coffee espressoBeans = new Coffee("Espresso Beans", 30, 0.5);
Coffee arabicaGround = new Coffee("Arabica Ground", 20, 0.6);
Coffee instantCoffee = new Coffee("Instant Coffee", 15, 0.7);
CoffeeVan coffeeVan = new CoffeeVan(100);
coffeeVan.addCoffee(espressoBeans, 50);
coffeeVan.addCoffee(arabicaGround, 30);
coffeeVan.addCoffee(instantCoffee, 20);
coffeeVan.sortCoffeesByValue();
List<Coffee> resultCoffees = coffeeVan.findCoffeeByQuality(10, 25, 0.5, 0.7);
System.
out.
println("Найденный кофе:"); for (Coffee coffee : resultCoffees) {
System.
out.
println(coffee.
getName() + " - Цена: " + coffee.
getPricePerKg() + "$, Объем: " + coffee.
getVolumePerKg() + " кг"); }
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CmltcG9ydCBqYXZhLnV0aWwuQ29tcGFyYXRvcjsKaW1wb3J0IGphdmEudXRpbC5MaXN0OwoKY2xhc3MgQ29mZmVlIHsKICAgIHByaXZhdGUgU3RyaW5nIG5hbWU7CiAgICBwcml2YXRlIGRvdWJsZSBwcmljZVBlcktnOwogICAgcHJpdmF0ZSBkb3VibGUgdm9sdW1lUGVyS2c7CgogICAgcHVibGljIENvZmZlZShTdHJpbmcgbmFtZSwgZG91YmxlIHByaWNlUGVyS2csIGRvdWJsZSB2b2x1bWVQZXJLZykgewogICAgICAgIHRoaXMubmFtZSA9IG5hbWU7CiAgICAgICAgdGhpcy5wcmljZVBlcktnID0gcHJpY2VQZXJLZzsKICAgICAgICB0aGlzLnZvbHVtZVBlcktnID0gdm9sdW1lUGVyS2c7CiAgICB9CgogICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgewogICAgICAgIHJldHVybiBuYW1lOwogICAgfQoKICAgIHB1YmxpYyBkb3VibGUgZ2V0UHJpY2VQZXJLZygpIHsKICAgICAgICByZXR1cm4gcHJpY2VQZXJLZzsKICAgIH0KCiAgICBwdWJsaWMgZG91YmxlIGdldFZvbHVtZVBlcktnKCkgewogICAgICAgIHJldHVybiB2b2x1bWVQZXJLZzsKICAgIH0KfQoKY2xhc3MgQ29mZmVlVmFuIHsKICAgIHByaXZhdGUgZG91YmxlIGNhcGFjaXR5OwogICAgcHJpdmF0ZSBMaXN0PENvZmZlZT4gY29mZmVlczsKCiAgICBwdWJsaWMgQ29mZmVlVmFuKGRvdWJsZSBjYXBhY2l0eSkgewogICAgICAgIHRoaXMuY2FwYWNpdHkgPSBjYXBhY2l0eTsKICAgICAgICB0aGlzLmNvZmZlZXMgPSBuZXcgQXJyYXlMaXN0PD4oKTsKICAgIH0KCiAgICBwdWJsaWMgdm9pZCBhZGRDb2ZmZWUoQ29mZmVlIGNvZmZlZSwgZG91YmxlIHF1YW50aXR5KSB7CiAgICAgICAgY29mZmVlcy5hZGQoY29mZmVlKTsKICAgIH0KCiAgICBwdWJsaWMgdm9pZCBzb3J0Q29mZmVlc0J5VmFsdWUoKSB7CiAgICAgICAgY29mZmVlcy5zb3J0KENvbXBhcmF0b3IuY29tcGFyaW5nRG91YmxlKChDb2ZmZWUgYykgLT4gYy5nZXRQcmljZVBlcktnKCkgLyBjLmdldFZvbHVtZVBlcktnKCkpLnJldmVyc2VkKCkpOwogICAgfQoKICAgIHB1YmxpYyBMaXN0PENvZmZlZT4gZmluZENvZmZlZUJ5UXVhbGl0eShkb3VibGUgbWluUHJpY2VQZXJLZywgZG91YmxlIG1heFByaWNlUGVyS2csIGRvdWJsZSBtaW5Wb2x1bWVQZXJLZywgZG91YmxlIG1heFZvbHVtZVBlcktnKSB7CiAgICAgICAgTGlzdDxDb2ZmZWU+IHJlc3VsdCA9IG5ldyBBcnJheUxpc3Q8PigpOwogICAgICAgIGZvciAoQ29mZmVlIGNvZmZlZSA6IGNvZmZlZXMpIHsKICAgICAgICAgICAgaWYgKGNvZmZlZS5nZXRQcmljZVBlcktnKCkgPj0gbWluUHJpY2VQZXJLZyAmJiBjb2ZmZWUuZ2V0UHJpY2VQZXJLZygpIDw9IG1heFByaWNlUGVyS2cgJiYKICAgICAgICAgICAgICAgICAgICBjb2ZmZWUuZ2V0Vm9sdW1lUGVyS2coKSA+PSBtaW5Wb2x1bWVQZXJLZyAmJiBjb2ZmZWUuZ2V0Vm9sdW1lUGVyS2coKSA8PSBtYXhWb2x1bWVQZXJLZykgewogICAgICAgICAgICAgICAgcmVzdWx0LmFkZChjb2ZmZWUpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9Cn0KCnB1YmxpYyBjbGFzcyBNYWluIHsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICBDb2ZmZWUgZXNwcmVzc29CZWFucyA9IG5ldyBDb2ZmZWUoIkVzcHJlc3NvIEJlYW5zIiwgMzAsIDAuNSk7CiAgICAgICAgQ29mZmVlIGFyYWJpY2FHcm91bmQgPSBuZXcgQ29mZmVlKCJBcmFiaWNhIEdyb3VuZCIsIDIwLCAwLjYpOwogICAgICAgIENvZmZlZSBpbnN0YW50Q29mZmVlID0gbmV3IENvZmZlZSgiSW5zdGFudCBDb2ZmZWUiLCAxNSwgMC43KTsKCiAgICAgICAgQ29mZmVlVmFuIGNvZmZlZVZhbiA9IG5ldyBDb2ZmZWVWYW4oMTAwKTsKICAgICAgICBjb2ZmZWVWYW4uYWRkQ29mZmVlKGVzcHJlc3NvQmVhbnMsIDUwKTsKICAgICAgICBjb2ZmZWVWYW4uYWRkQ29mZmVlKGFyYWJpY2FHcm91bmQsIDMwKTsKICAgICAgICBjb2ZmZWVWYW4uYWRkQ29mZmVlKGluc3RhbnRDb2ZmZWUsIDIwKTsKCiAgICAgICAgY29mZmVlVmFuLnNvcnRDb2ZmZWVzQnlWYWx1ZSgpOwoKICAgICAgICBMaXN0PENvZmZlZT4gcmVzdWx0Q29mZmVlcyA9IGNvZmZlZVZhbi5maW5kQ29mZmVlQnlRdWFsaXR5KDEwLCAyNSwgMC41LCAwLjcpOwoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oItCd0LDQudC00LXQvdC90YvQuSDQutC+0YTQtToiKTsKICAgICAgICBmb3IgKENvZmZlZSBjb2ZmZWUgOiByZXN1bHRDb2ZmZWVzKSB7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb2ZmZWUuZ2V0TmFtZSgpICsgIiAtINCm0LXQvdCwOiAiICsgY29mZmVlLmdldFByaWNlUGVyS2coKSArICIkLCDQntCx0YrQtdC8OiAiICsgY29mZmVlLmdldFZvbHVtZVBlcktnKCkgKyAiINC60LMiKTsKICAgICAgICB9CiAgICB9Cn0=