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