2017-06-02 3 views
0

Dans cet exemple, j'ai des classes.Comment Flatmap collection à l'intérieur de Pair dans Kotlin

Order(selections: List<Selection>, discount: Double, ...) 
Selection(productId: Long, price: Double, ...) 

je continue alors collection de Order que je veux calculer les prix après qui ont besoin d'utiliser Selection's price et Order's discount. Comment puis-je faire ceci?

J'essaie de faire ce qui suit, mais cela ne semble pas possible.

val orderList: List<Order> = loadFromDB() 

orderList.map { Pair(it.selections, it.discount) } 
.flatMap { /* Here I want to get list of Pair of selection from all orders with discount. */} 

Une fois que je Collection de Pair(Selection, discount) alors je peux continuer à calculer plus loin. Est-ce possible de faire sous cette forme? Ai-je besoin de séparer la chaîne?

Répondre

6

Pour obtenir une liste de paires, vous pouvez effectuer les opérations suivantes:

orderList.flatMap { order -> //flatMap joins multiple lists together into one 
    order.selections.map { selection -> //Map every selection into a Pair<Selection, Discount> 
     Pair(selection, order.discount) } 
    .map { pair -> /* Do your stuff here */ } 
+0

On dirait que je littéralement ne pensais pas assez grand. Merci. – RobGThai