У меня есть код, который должен сгруппировать список объектов транзакции по 2 категориям;
public class Transaction {
public String type;
public Integer amount;
}
Следующая функция разбила список на 2 категории, проверив условие.Выходная карта операции потока - Map<Boolean, List<Transaction>>
, но я хотел бы использовать строку в качестве ключа.Поэтому я преобразовал их вручную.
public static Map<String, List<Transaction>> partitionTransactionArray(List<Transaction> t1) {
Map<Boolean, List<Transaction>> result = list.stream().collect(Collectors.groupingBy(e -> ((e.type.equals("BUY") || e.type.equals("SELL")) && e.amount < 1000)));
// I think this is not necessary
Map<String, List<Transaction>> result1 = new HashMap<>();
result1.put("APPROVED", result.get(true));
result1.put("PENDING", result.get(false));
return result1;
}
Однако я думаю, что должен быть умный способ, позволяющий мне выполнять эту операцию в одной операции потока.
Может ли кто-нибудь помочь?
РЕДАКТИРОВАТЬ:
Что если вместо возврата Map<String, List<Transactions>>
я хочу вернуть Map<String, List<Integer>>
, где содержится списоктолько сумма сделки.
Как я могу сделать это в однопотоковой операции?