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中所述,给定selector
和transform
函数toMapBy
返回一个包含由
transform
提供的值并由应用于给定集合的元素的selector
函数编制索引的Map。 如果任何两个元素都具有由选择器返回的相同键,则将最后一个元素添加到地图中。
它适用于任何Iterable
。