У меня есть класс Company и 3 дочерних класса, которые наследуют методы из родительского класса, как получить 1 ArrayList со всеми значениями зарплат из разных классов
public class Company implements Employee {
List<Double> salary = new ArrayList<>();
public void getAllSalary() {
List<Double> allSalary = new ArrayList<>();
}
public void hireAll(Integer num) {
for (int i = 0; i < num; i++) {
salary.add(getMonthSalary());
}
}
public void hire() {
salary.add(getMonthSalary());
}
public void getTopSalary() {
}
@Override
public double getMonthSalary() {
return 0;
}
}
public class Operator extends Company implements Employee {
@Override
public double getMonthSalary() {
return 30000 + Math.round(Math.random() * 10000);
}
}
public class Manager extends Company implements Employee {
@Override
public double getMonthSalary() {
return 60000 + Math.round(Math.random() * 20000);
}
}
public class TopManager extends Company implements Employee {
@Override
public double getMonthSalary() {
return 100000 + Math.round(Math.random() * 50000);
}
}
Например так:
public class CompanyService{
public List<Double> getAllSalary(List<? extends Company> companies) {
List<Double> res = new ArrayList<>();
for(Company company : companies){
res.add(company.getMonthSalary());
}
return res;
}
}
В общем , если я правильно понял задачу, это выглядит так
import java.util.List; import java.util.stream.Collectors;
interface Employee {
long getMonthSalary();
List<Long> getSalaries();
static List<Long> getAllSalary(List<? extends Employee> companies) {
return companies.stream()
.flatMap(c->c.getSalaries().stream())
.collect(Collectors.toList());
}
}
import java.util.ArrayList; import java.util.List;
public abstract class Company implements Employee {
private final List<Long> SALARY;
public Company() {
this.SALARY = new ArrayList<>();
}
public Company hireAll(Integer num) {
long salary = getMonthSalary();
for (int i = 0; i < num; i++) this.SALARY.add(salary);
return this;
}
public Company hire() {
return this.hireAll(1);
}
public long getTopSalary() {
return SALARY.stream().mapToLong(v->v).max().orElse(0);
}
@Override
public List<Long> getSalaries() {
return SALARY;
}
}
public class Manager extends Company {
@Override
public long getMonthSalary() {
return 60000 + Math.round(Math.random() * 20000);
}
}
public class Operator extends Company {
@Override
public long getMonthSalary() {
return 30000 + Math.round(Math.random() * 10000);
}
}
public class TopManager extends Company {
@Override
public long getMonthSalary() {
return 100000 + Math.round(Math.random() * 50000);
}
}
import java.util.ArrayList; import java.util.List;
public class Main {
public static void main(String[] args) {
List<Employee> employies = new ArrayList<>();
employies.add(new Operator());
employies.add(new Manager().hireAll(10).hireAll(5));
employies.add(new TopManager().hire());
List<Long> allSalary = Employee.getAllSalary(employies);
System.out.println(allSalary);
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Существует ли в Spring Аннотация, которая позволяет при занесении строки в таблицу удалить её через время? например, суткиИ если таковой нет,...
Возникла проблема, пытаюсь загрузить файл XLSX и у меня выдает ошибку, хотя при загрузке XLS файла все нормальноКак это можно исправить? Вроде,...