Я теперь так делаю
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("4");
list.add("1");
int summ = list.stream()
.map(s -> Integer.parseInt(s)) // перевод из String в int
.reduce( (s1,s2) -> s1 + s2 ) // сумма
.orElse(0); // значение по умолчанию
System.out.println(summ);
Вместо list - используйте свою коллекцию объектов.
А внутри map(....) берите нужное значение поля.
ЗЫю Если с объектами, то вот так можно
public class Reduce {
public static class Offer {
int price;
public Offer (int price) {
this.price = price;
}
public int getPrice() {
return price;
}
}
public static void main(String args[]) {
List< Offer > list = new ArrayList<>();
list.add(new Offer(1));
list.add(new Offer(2));
list.add(new Offer(4));
list.add(new Offer(1));
int summ = list.stream()
.map(Offer::getPrice) // взять прайс
.reduce( (s1,s2) -> s1 + s2 ) // сумма
.orElse(0); // значение по умолчанию
System.out.println(summ);
}
}