利用kotlin实现统计文件字符个数的方法示例

所属分类: 软件编程 / Android 阅读数: 47
收藏 0 赞 0 分享

前言

对于开发的大家来说,统计文件字符个数是个常见的程序。今天利用刚学习的kotlin来实现一下。下面话不多说了,来一起看看详细的介绍吧。

方法如下:

首先找到一个要统计的文件。

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} 次")
 }

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

附上:HashMap结构图

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

更多精彩内容其他人还在看

android开发之Json文件的读写的示例代码

这篇文章主要介绍了android开发之Json文件的读写的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android7.0指纹服务FingerprintService实例介绍

这篇文章主要介绍了Android7.0指纹服务FingerprintService介绍,需要的朋友可以参考下
收藏 0 赞 0 分享

Android JNI处理图片实现黑白滤镜的方法

这篇文章主要介绍了Android JNI处理图片实现黑白滤镜的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android引入OpenCV的示例

本篇文章主要介绍了Android引入OpenCV的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android Zip解压缩工具类分享

这篇文章主要为大家详细介绍了Android Zip解压缩工具类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android RxJava创建操作符Interval

这篇文章主要为大家详细介绍了Android RxJava创建操作符Interval的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

5分钟快速实现Android爆炸破碎酷炫动画特效的示例

本篇文章主要介绍了5分钟快速实现Android爆炸破碎酷炫动效的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android 指纹功能实例代码

本文通过一个demo给大家介绍了android指纹功能,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友参考下吧
收藏 0 赞 0 分享

Android实现倒计时CountDownTimer使用详解

这篇文章主要为大家详细介绍了Android实现倒计时CountDownTimer的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android RxJava创建操作符Timer的方法

这篇文章主要为大家详细介绍了Android RxJava创建操作符Timer的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享
查看更多