# Add a toMap overload that takes a pair producing lambda

**URL:** <https://discuss.kotlinlang.org/t/add-a-tomap-overload-that-takes-a-pair-producing-lambda/20707>\
**Category:** Language Design\
**Created:** [January 31, 2021, 1:29pm UTC](https://discuss.kotlinlang.org/t/add-a-tomap-overload-that-takes-a-pair-producing-lambda/20707 "2021-01-31T13:29:43Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![rhdunn](https://avatars.discourse-cdn.com/v4/letter/r/c67d28/32.png) [@rhdunn](https://discuss.kotlinlang.org/u/rhdunn)\
**Post date:** [January 31, 2021, 1:29pm UTC](https://discuss.kotlinlang.org/t/add-a-tomap-overload-that-takes-a-pair-producing-lambda/20707/1 "2021-01-31T13:29:43Z")

</div>

I’ve sometimes found myself writing code like:

```
val map = value.split(';').map {
    it.split('=').let { parts -> parts[0] to parts[1] }
}.toMap()

```

This is somewhat inefficient as it is constructing a list as part of the `map` expression before converting it to a map.

It would be useful having a `toMap` variant that takes a lambda expression that produces the key/value pairs. This would then put the key/value pairs directly onto the map without creating an intermediate list first. – This is similar to the lambda versions of functions like `joinToString`.

```
val map = value.split(';').toMap {
    it.split('=').let { parts -> parts[0] to parts[1] }
}

```

---

<div class="post-metadata">

**Author:** ![akurczak](https://avatars.discourse-cdn.com/v4/letter/a/f07891/32.png) [@akurczak](https://discuss.kotlinlang.org/u/akurczak)\
**Post date:** [January 31, 2021, 1:47pm UTC](https://discuss.kotlinlang.org/t/add-a-tomap-overload-that-takes-a-pair-producing-lambda/20707/2 "2021-01-31T13:47:15Z")

</div>

It’s already there, called `associate`

> **[associate - Kotlin Programming Language](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/associate.html)**

---

<div class="post-metadata">

**Author:** ![rhdunn](https://avatars.discourse-cdn.com/v4/letter/r/c67d28/32.png) [@rhdunn](https://discuss.kotlinlang.org/u/rhdunn)\
**Post date:** [January 31, 2021, 1:48pm UTC](https://discuss.kotlinlang.org/t/add-a-tomap-overload-that-takes-a-pair-producing-lambda/20707/3 "2021-01-31T13:48:45Z")

</div>

Thanks!
