且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

kotlin高阶函数开发一个程序,统计文本中字符串出现的个数

更新时间:2022-06-01 22:46:38

一、高阶函数是Kotlin的核心部分,下面来使用下高阶函数写一个程序

注意:我这里的File使用的是:与src同级的文件,你可以根据自己的需要,修改文件地址
kotlin高阶函数开发一个程序,统计文本中字符串出现的个数

代码实例

package net.println.kotlin.chapter5.example

import jdk.nashorn.internal.objects.NativeArray.map
import java.io.File

/**
 * @author:wangdong
 * @description:统计一个文本文件中字符串出现的个数
 */

fun main(args: Array<String>) {
    //定义一个map,char表示文件中的字符,int表示出现的次数
    val map = HashMap<Char,Int>()
    //1.读取一个文件
    //2.toCharArray把它变成字符数组
    //3.filterNot不要空白字符
    //4.forEach统计
    //方式一:
    /*File("build.gradle").readText().toCharArray().filterNot(Char::isWhitespace).forEach{
        val count = map[it]
        //如果这个字符在map中没有,就将字符添加到map,并计数为1
        if (count == null) map[it] = 1
        //如果这个字符在map中存在,就给map中它的数量加1
        else map[it] = count + 1
    }*/

    //方式二:简化版
    //用it分组
    File("build.gradle").readText().toCharArray().filterNot(Char::isWhitespace)
            .groupBy { it }.map {
                it.key to it.value.size
            }.forEach(::println)

    //方式一:把map输出一下
    //map.forEach(::println)
}

输出的结果:方式一和方式二,结果一样,表现现实不一样

(b, 5)
(u, 9)
(i, 43)
(l, 29)
(d, 9)
(s, 22)
(c, 8)
(r, 22)
(p, 22)
(t, 35)
({, 7)
(e, 37)
(x, 1)
(., 16)
......

好啦,结束,欢迎大家一起努力进步!