Chethan
04/08/2022, 11:28 AMCicero
04/08/2022, 1:04 PMtseisel
04/08/2022, 7:48 PMList
function:
val firstList: List<A> = ...
val secondList: List<B> = ...
val thirdList: List<C> = ...
val mergedList: List<R> = List(
minOf(firstList.size, secondList.size, thirdList.size)
) { index ->
val a = firstList[index]
val b = secondList[index]
val c = thirdList[index]
... your combine logic ...
}
Chethan
04/10/2022, 5:38 AMprivate fun combine(lists: List<List<AmbientCardInfo>>): List<AmbientCardInfo> {
if (lists.isEmpty()) return emptyList()
val iteratorList = mutableListOf<Iterator<AmbientCardInfo>>()
lists.forEach {
iteratorList.add(it.iterator())
}
val combinedList = mutableListOf<AmbientCardInfo>()
var index = 0
while (iteratorList.size > 0) {
val iteratorIndex = index % iteratorList.size
when {
iteratorList[iteratorIndex].hasNext() -> {
combinedList.add(iteratorList[iteratorIndex].next())
}
else -> {
iteratorList.removeAt(iteratorIndex)
}
}
index++
}
return combinedList
}