Я пытаюсь написать метод, который принимает любую коллекцию любого типа, две функции и два целочисленных значения, которые представляют определенный предел.
Для лучшего понимания я покажу пример метода, который я хотел бы построить generi c.
private void buildSums() {
double sum = 0;
for (YearlyLineValuesEntity y_l_v_E : yearlyList) {
if (y_l_v_E.getDb() >= 20001 && y_l_v_E.getDb() <= 20155) {
sum += y_l_v_E.getAmount();
}
}
}
Возвращаемое значение в примере метода в этом случае не имеет значения. Это служит только для базового c понимания моей цели.
Это моя попытка:
Числа в приведенном выше утверждении if представлены параметрами «от» и «до» в следующем методе, который я пробовал. getDb () должен исходить из параметра "propertyDb", а getAmount () должен исходить из "propertyAmount" -параматора.
<T> List <Double> sumUpGroup(Collection<? extends T> entityList, Function<? super T, Integer> propertyDb, Function<?
super T, Double> propertyAmount, int from, int to) {
Double sum = null;
List<Double> list = null;
for (int i = 0; i < entityList.size(); i++) {
EntityList x = entityList.get(i); //generic type
if (x.getDB() >= from && x.getDB() <= to) { //propertyDb here
sum += x.getAmount(); //propertyAmount here
}
}
list.add(sum);
return list;
}
Я не знаю, как действовать дальше в коде с двумя функциями, которые прийти в качестве параметров в методе. Нужен ли другой метод, чтобы позаботиться об этом?
У кого-нибудь из вас есть идеи? Спасибо