Java 8 stream.collect(Collectors.toMap())类似于kotlin

假设我有一个人员列表,并希望有Map<String, Person> ,其中String是人名。 我应该怎么做在科特林?

    假设你有

     val list: List<Person> = listOf(Person("Ann", 19), Person("John", 23)) 

    toMapBy函数可能会满足你:

     val map = list.toMapBy({ it.name }, { it.age }) /* Contains: * "Ann" -> 19 * "John" -> 23 */ 

    如KDoc中所述,给定selectortransform函数toMapBy

    返回一个包含由transform提供的值并由应用于给定集合的元素的selector函数编制索引的Map。 如果任何两个元素都具有由选择器返回的相同键,则将最后一个元素添加到地图中。

    它适用于任何Iterable