Kotlin функция агрегирования - PullRequest
2 голосов
/ 19 июня 2020

Мне нужно как-то написать функцию, которая объединяет результаты в список. Я работаю с Order dto (java class)

public class Order {
    private Long orderId;
    private String description;
    ...
}

У меня есть два API: тот, который возвращает заказы, а другой, который возвращает подзаказы. Итак, я извлекаю все заказы и получаю все подзаказы в al oop по предопределенным идентификаторам:

// for example i have a predefined list of order id's
List<Long> orderIds = listOf(1L, 2L, 3L, 4L, 5L)

val allOrders = orderIds.map {
    // at first i retrieve an order
    val order = orderService.getOrderById(it.orderId)
    // then i get a list of suborders
    val suborders = suborderService.getSubordersByOrderId(it.orderId)
    // ?
}

Как я могу объединить order (Порядок) и suborders (Список) в список Порядка и тогда все элементы вложенного списка в единый список?

1 Ответ

1 голос
/ 19 июня 2020

Я думаю, что flatMap - это то, что вам нужно:

val allOrders: List<Order> = orderIds.flatMap {
    val order = orderService.getOrderById(it)
    val suborders = suborderService.getSubordersByOrderId(it)
    suborders + order
}

Он объединяет все элементы возвращенного списка в один единственный список.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...