Search code examples
androidkotlincollectionsjava-streamflatmap

Kotlin: How to convert a list of object to a Set based on object values


Please suggest better ways to convert routes to routesMap.

lateinit var routes: List<Pair<String, String>>
val routesMap = HashMap<String, ArrayList<String>>
routes.forEach { 
    routesMap.getOrPut(it.first) { ArrayList<String>() }.add(it.second)
}

Solution

  • This operation is often called "grouping by" and can be easily done in Kotlin using groupBy() extension:

    val routesMap = routes.groupBy({ it.first }, { it.second })