Как объединить ArrayList из разных классов?

114
19 января 2022, 15:30

У меня есть класс 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);
    }
}
Answer 1

Например так:

 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;
    }
 }
Answer 2

В общем , если я правильно понял задачу, это выглядит так

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);        
    }
     }
READ ALSO
Java Spring добавление временной строки в бд

Java Spring добавление временной строки в бд

Существует ли в Spring Аннотация, которая позволяет при занесении строки в таблицу удалить её через время? например, суткиИ если таковой нет,...

102
Обработка исключений в Spring Boot

Обработка исключений в Spring Boot

Имеется база mysql/postgresНет никакого серверного приложения

94
Ошибка NoClassDefFoundError в Apache Poi

Ошибка NoClassDefFoundError в Apache Poi

Возникла проблема, пытаюсь загрузить файл XLSX и у меня выдает ошибку, хотя при загрузке XLS файла все нормальноКак это можно исправить? Вроде,...

101