Estoy buscando una forma en Kotlin para evitar la repetición de elementos en una lista pero aún así conservar el orden. Por ejemplo
val list = listOf(ObjectMock(1,"a"), ObjectMock(2,"c"), ObjectMock(3,"c"), ObjectMock(4,"a"), ObjectMock(4,"c"), ObjectMock(4,"c"), ObjectMock(1,"a") , ObjectMock(1,"c"), ObjectMock(2,"c"), ObjectMock(3,"c"), ObjectMock(4,"a") , ObjectMock(2,"b") )debe convertirse
result = listOf(ObjectMock(1,"a"), ObjectMock(2,"c"), ObjectMock(3,"c"), ObjectMock(4,"a"), ObjectMock(1,"a") , ObjectMock(2,"c"), ObjectMock(3,"c"), ObjectMock(4,"a") , ObjectMock(2,"b") )Estoy usando un bucle for y verifico el siguiente elemento y luego lo agrego a una lista diferente, pero ¿hay una forma más elegante de hacerlo?
Puedes hacerlo usando Kotlin Flows
viewModelScope.launch { list.asFlow() .distinctUntilChanged() .collect { Log.d(TAG, "distict numbers: $it") } }esta es otra forma de hacerlo
val list = listOf(1, 2, 3, 4, 4, 4, 1, 1, 2, 3, 4, 4 ) val result = list.fold(emptyList<Int>()){acc, i -> if (acc.lastOrNull() != i) acc + i else acc }