package org.javamoney.examples.console.functional;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.stream.Collectors;
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 MonetarySorterOperations {
public static void main(String[] args) {
List<MonetaryAmount> orderCurrency = getDollars().stream().sorted(MonetaryFunctions.sortCurrencyUnit()).collect(Collectors.toList());
List<MonetaryAmount> orderSort = getDollars()
.stream()
.sorted(MonetaryFunctions.sortCurrencyUnit().thenComparing(
MonetaryFunctions.sortNumber()))
.collect(Collectors.toList());
List<MonetaryAmount> orderCurrencyNumber = getDollars()
.stream()
.sorted(MonetaryFunctions.sortCurrencyUnit().thenComparing(
MonetaryFunctions.sortCurrencyUnitDesc()))
.collect(Collectors.toList());
System.out.println(orderCurrency);
System.out.println(orderSort);
System.out.println(orderCurrencyNumber);
}
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;
}
}