import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
class Tariff {
protected double subscriptionFee;
public Tariff
(String name,
double subscriptionFee
) { this.name = name;
this.subscriptionFee = subscriptionFee;
}
return name;
}
public double getSubscriptionFee() {
return subscriptionFee;
}
public int getTotalSubscribers() {
return 0;
}
}
class PrepaidTariff extends Tariff {
private int subscribers;
public PrepaidTariff
(String name,
double subscriptionFee,
int subscribers
) { super(name, subscriptionFee);
this.subscribers = subscribers;
}
public int getTotalSubscribers() {
return subscribers;
}
}
class PostpaidTariff extends Tariff {
private int subscribers;
public PostpaidTariff
(String name,
double subscriptionFee,
int subscribers
) { super(name, subscriptionFee);
this.subscribers = subscribers;
}
public int getTotalSubscribers() {
return subscribers;
}
}
class MobileCompany {
private ArrayList<Tariff> tariffs;
public MobileCompany() {
tariffs = new ArrayList<>();
}
public void addTariff(Tariff tariff) {
tariffs.add(tariff);
}
public int getTotalSubscribers() {
int totalSubscribers = 0;
for (Tariff tariff : tariffs) {
totalSubscribers += tariff.getTotalSubscribers();
}
return totalSubscribers;
}
public ArrayList<Tariff> sortTariffsByMonthlyFee() {
ArrayList<Tariff> sortedTariffs = new ArrayList<>(tariffs);
return sortedTariffs;
}
public Tariff findTariffByMonthlyFeeRange(double minFee, double maxFee) {
return tariffs.stream()
.filter(t -> t.getSubscriptionFee() >= minFee && t.getSubscriptionFee() <= maxFee)
.findFirst().orElse(null);
}
}
public class Main {
public static void main
(String[] args
) { MobileCompany company = new MobileCompany();
company.addTariff(new PrepaidTariff("Standard", 1000.0, 15000));
company.addTariff(new PostpaidTariff("Premium", 3000.0, 8000));
company.addTariff(new PostpaidTariff("Business", 5000.0, 6800));
System.
out.
println("Общее число клиентов в компании: " + company.
getTotalSubscribers());
ArrayList<Tariff> sortedTariffs = company.sortTariffsByMonthlyFee();
System.
out.
println("\nТарифы компании, отсортированные по размеру абонентской платы:"); for (Tariff tariff : sortedTariffs) {
System.
out.
println("Тариф: " + tariff.
getName()); System.
out.
println("Абонентская плата: " + tariff.
getSubscriptionFee()); }
double minFee = 1000.0;
double maxFee = 5000.0;
Tariff foundTariff = company.findTariffByMonthlyFeeRange(minFee, maxFee);
if (foundTariff != null) {
System.
out.
println("\nТариф в компании с абонентской платой от " + minFee
+ " до " + maxFee
); } else {
System.
out.
println("\nНет тарифа в компании с абонентской платой от " + minFee
+ " до " + maxFee
); }
}
}