leosan
11/01/2019, 4:46 PMval listOfLists = listOf(
Data(1, listOf("A")),
Data(2, listOf("B")),
Data(1, listOf("B")),
Data(2, listOf("C"))
)
output: [ Data(1,listOf("A","B")) , Data(2,listOf("B","C"))]
christoph.pickl
11/01/2019, 4:57 PMdata class Data(
val number: Int,
val strings: List<String>
)
val listOfLists = listOf(
Data(1, listOf("A")),
Data(2, listOf("B")),
Data(1, listOf("B")),
Data(2, listOf("C"))
)
val calculated = listOfLists.groupBy { it.number }.map { entry ->
Data(entry.key, entry.value.map { it.strings }.flatten())
}
println(calculated) // [Data(number=1, strings=[A, B]), Data(number=2, strings=[B, C])]
Luke Rohde
11/01/2019, 5:09 PMlistOfLists
.groupingBy { it.key }
.aggregate {i,r: Data?, el, _ ->
Data(i, (r?.strings ?: listOf<String>()) + el.strings )
}
.values
Luke Rohde
11/01/2019, 5:09 PMleosan
11/01/2019, 5:12 PMleosan
11/01/2019, 5:12 PMleosan
11/01/2019, 5:13 PMleosan
11/01/2019, 5:19 PM