Kenneth
03/08/2019, 10:43 AMDias
03/08/2019, 10:49 AMwbertan
03/08/2019, 10:51 AM@Test
fun `test chunked`() {
val list =
List(99) { it }
val result = list.chunked(10)
println(result)
assertEquals(10, result.size)
assertEquals(10, result[0].size)
assertEquals(10, result[1].size)
assertEquals(10, result[2].size)
assertEquals(10, result[3].size)
assertEquals(10, result[4].size)
assertEquals(10, result[5].size)
assertEquals(10, result[6].size)
assertEquals(10, result[7].size)
assertEquals(10, result[8].size)
assertEquals(9, result[9].size)
}
Kenneth
03/08/2019, 11:19 AMval groups = persons.chunked(10, { Group(it) })
Kenneth
03/08/2019, 11:21 AMDias
03/08/2019, 11:25 AMDias
03/08/2019, 11:25 AMKenneth
03/08/2019, 11:26 AMKenneth
03/08/2019, 11:26 AMKenneth
03/08/2019, 11:27 AMDias
03/08/2019, 11:27 AMmarstran
03/08/2019, 11:28 AMsize
elements left in the list, then the chunk will have that amount of elements.Kenneth
03/08/2019, 11:29 AMDias
03/08/2019, 11:31 AMwbertan
03/08/2019, 11:31 AMGroup
is doing?Kenneth
03/08/2019, 11:32 AMlistOf220KElements.chunked(50) { Domain.ApiRequest(it, Config.SOURCE, Config.API_KEY) }
wbertan
03/08/2019, 11:34 AMdata class Group(val values: List<Int>)
@Test
fun `test group chunked`() {
val list = List(99) { it }
val result = list.chunked(10) { Group(it) }
println(result)
assertEquals(10, result.size)
assertEquals(10, result[0].values.size)
assertEquals(10, result[1].values.size)
assertEquals(10, result[2].values.size)
assertEquals(10, result[3].values.size)
assertEquals(10, result[4].values.size)
assertEquals(10, result[5].values.size)
assertEquals(10, result[6].values.size)
assertEquals(10, result[7].values.size)
assertEquals(10, result[8].values.size)
assertEquals(9, result[9].values.size)
}
@Test
fun `test chunked`() {
val list = List(99) { it }
val result = list.chunked(10)
println(result)
assertEquals(10, result.size)
assertEquals(10, result[0].size)
assertEquals(10, result[1].size)
assertEquals(10, result[2].size)
assertEquals(10, result[3].size)
assertEquals(10, result[4].size)
assertEquals(10, result[5].size)
assertEquals(10, result[6].size)
assertEquals(10, result[7].size)
assertEquals(10, result[8].size)
assertEquals(9, result[9].size)
}
the test group chunked
, some of the expected size 10 actually came as 9!!!!wbertan
03/08/2019, 11:35 AMwbertan
03/08/2019, 11:35 AM[Group(values=[90, 91, 92, 93, 94, 95, 96, 97, 98]), Group(values=[90, 91, 92, 93, 94, 95, 96, 97, 98]), Group(values=[90, 91, 92, 93, 94, 95, 96, 97, 98]), Group(values=[90, 91, 92, 93, 94, 95, 96, 97, 98]), Group(values=[90, 91, 92, 93, 94, 95, 96, 97, 98]), Group(values=[90, 91, 92, 93, 94, 95, 96, 97, 98]), Group(values=[90, 91, 92, 93, 94, 95, 96, 97, 98]), Group(values=[90, 91, 92, 93, 94, 95, 96, 97, 98]), Group(values=[90, 91, 92, 93, 94, 95, 96, 97, 98]), Group(values=[90, 91, 92, 93, 94, 95, 96, 97, 98])]
Kenneth
03/08/2019, 11:37 AM* Splits this collection into several lists each not exceeding the given [size]
* and applies the given [transform] function to an each.
Kenneth
03/08/2019, 11:37 AMwbertan
03/08/2019, 11:38 AM* Note that the list passed to the [transform] function is ephemeral and is valid only inside that function.
* You should not store it or allow it to escape in some way, unless you made a snapshot of it.
* The last list may have less elements than the given [size].
wbertan
03/08/2019, 11:38 AMdata class Group(val values: List<Int>)
@Test
fun `test group chunked`() {
val list = List(99) { it }
val result = list.chunked(10) { Group(listOf(*it.toTypedArray())) }
println(result)
assertEquals(10, result.size)
assertEquals(10, result[0].values.size)
assertEquals(10, result[1].values.size)
assertEquals(10, result[2].values.size)
assertEquals(10, result[3].values.size)
assertEquals(10, result[4].values.size)
assertEquals(10, result[5].values.size)
assertEquals(10, result[6].values.size)
assertEquals(10, result[7].values.size)
assertEquals(10, result[8].values.size)
assertEquals(9, result[9].values.size)
}
this nows works fine, as expected.wbertan
03/08/2019, 11:38 AM[Group(values=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]), Group(values=[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]), Group(values=[20, 21, 22, 23, 24, 25, 26, 27, 28, 29]), Group(values=[30, 31, 32, 33, 34, 35, 36, 37, 38, 39]), Group(values=[40, 41, 42, 43, 44, 45, 46, 47, 48, 49]), Group(values=[50, 51, 52, 53, 54, 55, 56, 57, 58, 59]), Group(values=[60, 61, 62, 63, 64, 65, 66, 67, 68, 69]), Group(values=[70, 71, 72, 73, 74, 75, 76, 77, 78, 79]), Group(values=[80, 81, 82, 83, 84, 85, 86, 87, 88, 89]), Group(values=[90, 91, 92, 93, 94, 95, 96, 97, 98])]
marstran
03/08/2019, 11:52 AMlist.asSequence()
.chunked(10)
.map { Group(it) }
wbertan
03/08/2019, 11:54 AMchunked
will be faster (I believe it will be doing in the same time it loops through the list), anyway, maybe is worth to check it too.