41. 用kotlin实现统计文件字符个数

作者: 厚土火焱 | 来源:发表于2017-12-01 11:11 被阅读44次

统计文件字符个数是个常见的程序。今天实现一下。
首先找到一个要统计的文件。

val file = "F:\\MyBook\\读书备忘录.txt"

然后建立一个HashMap,用来存储统计的结果。

val map = HashMap<Char, Int>()

读取文件内容,转换成Char进行遍历统计

File(file).readText().toCharArray().filterNot(Char::isWhitespace).forEach {
        val count = map[it]
        if (count == null){
            map[it] = 1
        }else{
            map[it] = count +1
        }        
    }

readText()就是读取文件内容了
toCharArray()转成Char数组
filterNot(Char::isWhitespace)忽略空格
遍历的时候,把当前遍历到的map[it]赋给 count ,如果在 map 中没找到这个字符,即 count == null,则为初次记录,map[it] 为 1,否则 map[it] 已经记录过了,在原有计数基础上加1。
最后输出统计结果

map.forEach { t, u -> println("字符\"$t\"出现了 $u 次")}

执行效果如下

统计文件中每个字符的个数
字符"言"出现了 1 次
字符"需"出现了 1 次
字符"最"出现了 1 次
字符"要"出现了 1 次
字符"节"出现了 1 次
字符"。"出现了 1 次
字符"窄"出现了 1 次
字符"的"出现了 1 次
字符"★"出现了 5 次
字符"("出现了 1 次
字符"按"出现了 1 次
字符")"出现了 1 次
字符"《"出现了 1 次
字符"》"出现了 1 次
字符","出现了 2 次
字符"完"出现了 1 次
字符"复"出现了 1 次
字符"后"出现了 2 次
字符"题"出现了 1 次
字符":"出现了 1 次
字符"圣"出现了 1 次
字符"个"出现了 1 次
字符"本"出现了 1 次
字符"-"出现了 2 次
字符"."出现了 2 次
字符"0"出现了 4 次
字符"新"出现了 1 次
字符"1"出现了 6 次
字符"2"出现了 3 次
字符"3"出现了 2 次
字符"6"出现了 3 次
字符"边"出现了 1 次
字符"雅"出现了 1 次
字符"G"出现了 1 次
字符"版"出现了 1 次
字符"重"出现了 1 次
字符"经"出现了 1 次
字符"黑"出现了 1 次
字符"体"出现了 1 次
字符"字"出现了 1 次
字符"这"出现了 1 次
字符"距"出现了 1 次
字符"章"出现了 1 次
字符"习"出现了 2 次
字符"d"出现了 1 次
字符"f"出现了 1 次
字符"学"出现了 1 次
字符"书"出现了 1 次
字符"照"出现了 1 次
字符"全"出现了 1 次
字符"语"出现了 1 次
字符"o"出现了 1 次
字符"p"出现了 1 次
字符"数"出现了 1 次
字符"读"出现了 1 次

上面的读取还不够简练,我们可以再简化一点,完全不必声明 HashMap。

val file = "F:\\MyBook\\读书备忘录.txt"
File(file).readText().toCharArray().filterNot(Char::isWhitespace).groupBy{it}.map {
        it.key to it.value.size
    }.forEach{
        println("字符\"${it.first}\"出现了 ${it.second} 次")
    }

一样可以达到效果。这才是函数式编程。

相关文章

  • 41. 用kotlin实现统计文件字符个数

    统计文件字符个数是个常见的程序。今天实现一下。首先找到一个要统计的文件。 然后建立一个HashMap,用来存储统计...

  • iOS面试题

    1.NSString如何计算字符的个数? 应该是用countElements的函数来统计字符串所包含的字符个数,把...

  • 分布式计算(一)Hadoop例子

    用Mapreduce实现单词个数统计 计算向量的和输入为A 11 0.3 统计词的个数 其他资料

  • 统计字符个数

    题目:给定一个字符串(只可能包含英文字母、数字、空格),分别统计出其中英文字母、空格、数字的个数。

  • Linux/Mac下统计当前文件夹下的文件个数、目录个数

    这篇文章主要介绍了Linux下统计当前文件夹下的文件个数、目录个数,本文使用ls命令配合管理、grep命令实现统计...

  • 字符统计

    题目描述 如果统计的个数相同,则按照ASCII码由小到大排序输出。如果有其他字符,则对这些字符不用进行统计。 实现...

  • MySQL创建自定义函数:父节点递归查询子节点

    需求:统计父文件夹包含子文件夹的文件个数。 最早是用Java代码实现的递归查询,本地测试没注意性能,正式上线后执行...

  • shell 脚本常用语法

    按 "," 分隔字符串得到数组并遍历输出 统计文件某列各个取值的个数 统计 newhot.txt 文件夹第三列每个...

  • ubuntu下统计目录下的文件个数和快速删除

    统计目录下的文件个数不包含文件夹: 统计目录下的文件个数包括子目录: 统计目录下文件夹(目录)的个数: 统计某种文...

  • 字符串 排序-字符统计

    如果统计的个数相同,则按照ASII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。 实现以下接口:...

网友评论

    本文标题:41. 用kotlin实现统计文件字符个数

    本文链接:https://www.haomeiwen.com/subject/dfvibxtx.html