package org.javamoney.examples.console.functional;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import javax.money.CurrencyUnit;
import javax.money.MonetaryAmount;
import javax.money.Monetary;
import org.javamoney.moneta.Money;
import org.javamoney.moneta.function.MonetaryFunctions;
public class MonetaryReducerOperations {
public static void main(String[] args) {
List<MonetaryAmount> moneys = getDollars();
MonetaryAmount min = moneys.stream().reduce(MonetaryFunctions.min()).get();
MonetaryAmount max = moneys.stream().reduce(MonetaryFunctions.max()).get();
MonetaryAmount sum = moneys.stream().reduce(MonetaryFunctions.sum()).get();
System.out.println(min);//USD 50
System.out.println(max);//USD 120
System.out.println(sum);//USD 460
}
public static List<MonetaryAmount> getDollars() {
CurrencyUnit dollar = Monetary.getCurrency(Locale.US);
List<MonetaryAmount> moneys = new ArrayList<>();
moneys.add(Money.of(120, dollar));
moneys.add(Money.of(50, dollar));
moneys.add(Money.of(80, dollar));
moneys.add(Money.of(90, dollar));
moneys.add(Money.of(120, dollar));
return moneys;
}
}