前言
對于開發的大家來說,統計文件字符個數是個常見的程序。今天利用剛學習的android/252240.html">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結構圖
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。
新聞熱點
疑難解答