Назад к вопросам
Junior
4
Опиши решение второй задачи (обработка заказов через Stream API с группировкой по валюте и сортировкой по разнице max-min).
Компании, где спрашивали
ИП Ганус Александр Андреевич
Ответ от нейросети
sobes.tech AI
Для решения задачи обработки заказов через Stream API с группировкой по валюте и сортировкой по разнице max-min можно использовать следующий подход на Dart (Flutter):
- Имеется поток заказов (Stream<Order>), где каждый заказ содержит сумму и валюту.
- Группируем заказы по валюте, собирая суммы в списки.
- Для каждой группы вычисляем разницу между максимальной и минимальной суммой.
- Сортируем группы по этой разнице.
Пример кода:
class Order {
final String currency;
final double amount;
Order(this.currency, this.amount);
}
void processOrders(Stream<Order> orders) async {
final Map<String, List<double>> grouped = {};
await for (var order in orders) {
grouped.putIfAbsent(order.currency, () => []).add(order.amount);
}
final sortedCurrencies = grouped.entries.toList()
..sort((a, b) {
double diffA = a.value.reduce((v, e) => v > e ? v : e) - a.value.reduce((v, e) => v < e ? v : e);
double diffB = b.value.reduce((v, e) => v > e ? v : e) - b.value.reduce((v, e) => v < e ? v : e);
return diffB.compareTo(diffA); // сортировка по убыванию
});
for (var entry in sortedCurrencies) {
print('Currency: \\${entry.key}, Difference: \\${entry.value.reduce((v, e) => v > e ? v : e) - entry.value.reduce((v, e) => v < e ? v : e)}');
}
}
Этот код читает поток заказов, группирует их по валюте, вычисляет разницу между максимальной и минимальной суммой в каждой группе и выводит валюты, отсортированные по этой разнице.