Ray*_*non 1 functional-programming kotlin
我有一个字符串列表,我想转换成一个出现的地图。( ~ Map 值是 String 在 List 中重复的次数)
命令式的方式,我会写如下
fun transformMap(list: List<String>): Map<String, Int> {
val map = mutableMapOf<String,Int>()
for(n in list){
map.put(n,map.getOrDefault(n,0) + 1)
}
return map.toMap()
}
Run Code Online (Sandbox Code Playgroud)
如何用函数式编程的方式写这个?
在 Java 8+ 中,这将是这样写的
String[] note;
Map<String, Integer> noteMap = Arrays.stream(note)
.collect(groupingBy(Function.identity(),
collectingAndThen(counting(), Long::intValue)));
Run Code Online (Sandbox Code Playgroud)
您可以Grouping通过Iterable<T>.groupingBy扩展使用 Kotlin在一行中完成此操作:
val myList = listOf("a", "b", "c", "a", "b", "a")
val myMap = myList.groupingBy { it }.eachCount()
println(myMap)
// Prints {a=3, b=2, c=1}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
444 次 |
| 最近记录: |